最喜欢的 rsync 提示和技巧

Ama*_*rus 58 linux unix files rsync file-transfer

我使用rsync的越多,我就越意识到它是文件传输的瑞士军刀。有很多选择。我最近发现你可以去--remove-source-files,当它被复制时,它会从源中删除一个文件,这使它更像是一个移动,而不是复制程序。:)

你最喜欢的 rsync 小技巧和窍门是什么?

Dav*_*ett 20

使用--link-dest创建基于节省空间的快照备份,因此你似乎有backedup数据(每个备份运行),但文件不运行之间改变的多个完整拷贝硬链接,而不是创建节省空间新副本。

(实际上,我仍然使用rysnc-followed-by-cp -al方法来实现相同的目的,请参阅http://www.mikerubel.org/computers/rsync_snapshots/以了解这两种技术的但仍然非常好及相关问题)

这种技术的一个主要缺点是,如果一个文件由于磁盘错误而损坏,它在链接到该文件的所有快照中也同样损坏,但我也有离线备份,可以在相当程度上防止这种情况发生。另一件需要注意的事情是你的文件系统有足够的 inode,否则你会在真正用完磁盘空间之前用完它们(尽管我从来没有遇到过 ext2/3 默认值的问题)。

此外,永远不要忘记--dry-run对于一点健康的偏执非常有用,尤其是当您使用这些--delete*选项时。

  • +1 为 --dry-run (6认同)
  • 我更喜欢使用长名称,尤其是在其他人可能最终会维护的脚本中。它在不参考文档的情况下更清楚地说明了意图。 (3认同)

rob*_*ast 20

如果您必须同步许多文件,请尝试使用 rsync 版本 3!V3 以增量方式构建其文件列表,并且比版本 2 快得多并且使用更少的内存。

根据您的平台,这可能会产生很大的不同。在 OSX 版本 2.6.3 上尝试构建 500 万个文件的索引需要一个多小时或崩溃,而我编译的版本 3.0.2 立即开始复制。


小智 16

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

rsync -a --max-size=100K /var/www/ 那里:/var/www/

然后对大文件执行此操作:

rsync -a --min-size=100K --bwlimit=100 /var/www/ 那里:/var/www/

rsync 有很多对网站来说很方便的选项。不幸的是,它没有检测同步更新的内置方法,因此您必须向 cron 脚本添加逻辑以避免大文件的重叠写入。


TCa*_*ell 11

在尝试将一个目录中的一小部分文件同步到另一个位置时,我使用了 --existing 选项。


jft*_*uga 10

--time-limit
Run Code Online (Sandbox Code Playgroud)

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

--stop-at=y-m-dTh:m
Run Code Online (Sandbox Code Playgroud)

此选项允许您指定停止 rsync 的时间。

Batch Mode
Run Code Online (Sandbox Code Playgroud)

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

  • 不幸的是,这些选项在与 Redhat/Centos 或 Ubuntu 发行版一起分发的 rsync 中不可用。 (3认同)

小智 9

--rsh 是我的。

我已经用它来将 ssh 上的密码更改为更快的 ( --rsh="ssh -c arcfour") 并设置sshs链(建议将其与 一起使用ssh-agent)以在无法直接通信的主机之间同步文件。( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


nea*_*mcb 8

如果您想知道运行缓慢的 rsync 已经走了多远,并且在传输文件时没有使用 -v 列出文件,您可以找出它打开了哪些文件:

 ls -l /proc/$(pidof rsync)/fd/*
Run Code Online (Sandbox Code Playgroud)

在具有 /proc 的系统上

比如刚才给我挂了rsync,虽然远程系统好像还剩一堆空间。这个技巧帮助我找到了我不记得的意外大文件,它不适合另一端。

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

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'
Run Code Online (Sandbox Code Playgroud)


And*_*ier 5

--archive 是备份类作业的标准选择(虽然不是默认选择),它确保源文件中的大多数元数据(权限、所有权等)被复制。

但是,如果您不想使用它,通常您仍然希望包含--times,它会在文件的修改时间之间复制。这使得下一rsync的是运行(假设你重复做)快,rsync的比较修改时间和跳过该文件,如果它是不变的。令人惊讶的是(至少对我而言)此选项不是默认选项。


Hub*_*rio 5

我的是--inplace。当备份服务器运行 ZFS 或 btrfs 并且您制作本机快照时,效果会很神奇。