我使用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
不同步空服务器崩溃的文件