最喜欢的rsync提示和技巧

我使用rsync越多,我越发觉到这是一个瑞士军刀的文件传输。 有这么多的select。 我最近发现你可以--remove-source-files ,当它被复制的时候,它会从源文件中删除一个文件,这使得它更有趣一些,而不是复制程序。 🙂

你最喜欢的rsync提示和技巧是什么?

    尝试使用rsync版本3,如果你必须同步许多文件! V3增量地构build它的文件列表并且比版本2更快地使用更less的内存。

    根据你的平台,这可能会有很大的不同。 在OSX 2.6.3版本将花费超过一个小时或崩溃试图build立一个500万的文件索引,而我编译的版本3.0.2开始复制马上。

    使用--link-dest创build节省空间的基于快照的备份,从而您似乎拥有备份数据的多个完整副本(每个备份运行一个副本),但运行间不会更改的文件是硬链接的,而不是创build新的副本节省空间。

    (实际上,我仍然使用rysnc -followed-by- cp -al方法来达到同样的效果,请参阅http://www.mikerubel.org/computers/rsync_snapshots/,以获得一个古老但仍然非常好的运行这两种技术和相关问题)

    这种技术的一个主要缺点是,如果一个文件由于磁盘错误而被损坏,那么它在链接到该文件的所有快照中也是一样的,但是我也有离线备份,这样可以很好地防止这种情况发生。 另外要注意的是你的文件系统有足够多的inode,否则在你真正用完磁盘空间之前,你的文件系统会耗尽(虽然我从来没有遇到ext2 / 3默认的问题)。

    此外,永远不要忘记非常有用的--dry-run一点健康的偏执狂,特别是当你使用 – --delete*选项。

    如果您需要通过一个较慢的链接更新一个包含大量文件的网站,您可以通过以下方式传输小文件:

    rsync -a –max-size = 100K / var / www / there:/ var / www /

    然后为大文件做这个:

    rsync -a –min-size = 100K –bwlimit = 100 / var / www / there:/ var / www /

    rsync有很多方便的网站选项。 不幸的是,它没有内置的检测同时更新的方法,所以你必须添加逻辑到cron脚本以避免重叠写入大文件。

    当使用–existing选项时,将一个目录中的一小部分文件同步到另一个位置。

    --rsh是我的。

    我用它来更改ssh上的密码更快一些( --rsh="ssh -c arcfour" )也设置了ssh链(build议与ssh-agent )来同步主机之间的文件不能直接说话。 ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/ )。

    如果您想知道慢速运行的rsync已经运行了多久,并且没有使用-v列出传输过程中的文件,则可以找出哪些文件已经打开:

      ls -l /proc/$(pidof rsync)/fd/* 

    在有/ proc的系统上

    例如,rsync刚刚挂了,尽pipe远程系统似乎还剩下一堆空间。 这个诡计帮助我find了一个我不记得的意外巨大的文件,这个文件不适合在另一端。

    它还告诉我一些更有趣的信息 – 另一端显然放弃了,因为还有一个断开的套接字链接:

     /proc/22954/fd/4: broken symbolic link to `socket:[2387837]' 
     --time-limit 

    当使用此选项时,rsync将在T分钟后停止并退出。 我认为这个选项在夜间(非繁忙时间)同步大量数据,然后在白天(繁忙时间)时间开始使用networking时停止。

     --stop-at=ym-dTh:m 

    这个选项允许你指定在什么时候停止rsync。

     Batch Mode 

    可以使用批处理模式将相同的一组更新应用于许多相同的系统。

    我使用最多的是绝对--exclude-from排除--exclude-from可以指定一个文件包含要排除的东西。

    我也发现--chmod非常有用,因为它可以让你确保权限最终在一个渴望的状态,即使你的源头搞砸了。

    –backup-dir = date +%Y.%m.%d –delete我们正在删除但正在复制…以防万一

    --archive是类似备份的作业的标准select(虽然不是默认设置),这可以确保来自源文件的大部分元数据(权限,所有权等)都被复制。

    然而,如果你不想使用它,通常你还是需要包含 – 时间,它将在文件的修改时间内复制。 这使得运行的下一个rsync(假设您正在重复执行) 快得多,因为rsync会比较修改时间,并在文件未更改时跳过该文件。 令人惊讶的是(至less对我来说)这个选项不是默认的。

    我的 – 是。 当备份服务器正在运行ZFS或btrfs并且制作本机快照时,可以工作。

    当然,也有删除从目标中不能find的东西的东西。

    cwrsync – 用于Windows的Rsync http://www.itefix.no/i2/node/10650

    该版本包含OpenSSH,因此您可以通过安全通道传输文件。

    如果您将rsync设置为服务器上的守护进程,则可以像浏览其他目录列表一样浏览共享模块。 然后你可以看到哪些path可用,什么不是。

     --partial 

    在中断的情况下

     --bwlimit=100 

    限制带宽 – 适用于复制大文件,目录

    当我使用GlusterFs我们有零大小的T文件的瓶颈,崩溃的砖或副本之间的同步,我们必须使用 – --min-size=1不同步空服务器崩溃的文件