使用rsync保留现有的目标符号链接


10

我正在使用rsync(1)来保持本地debian存储库的更新。最近,我用来存储该磁盘的磁盘空间不足,因此我决定使用符号链接将一些目录移动到另一个大小相似的磁盘上。

不幸的是,rsync似乎正在删除符号链接并重新填充几乎已满的磁盘。经过一番搜索,我发现了--keep-dirlinksrsync选项,它似乎是为解决我的问题而量身定制的。

只是没有。目标上的符号链接仍被删除。
这是我的rsync命令:

rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
 --delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
 $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/

EXCLUDE沿的方向扩展,以消除大量我不感兴趣的体系结构--exclude binary-alpha/ --exclude disks-alpha ...。在rsync启动之前,我的池目录如下所示:

lrwxrwxrwx  1 root root   23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx  1 root root   24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free

rsync启动后,我得到以下信息:

receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/

依此类推,将符号链接替换为充满文件的目录。

其他rsync选项是否会干扰--keep-dirlinks?我不能合并哪些?还是导致我的问题的选项顺序?

Answers:


7

--delete--delete-excluded你的计划的选项干扰,因为他们注意到符号链接是不存在的来源,从而将其删除。

仅当您告诉rsync您复制带有source/ target符号的整个目录(源代码后的斜杠)时,才会发生这种情况。如果source/* target改为使用,则Shell将扩展要复制的文件和目录的列表,并且不会发生这种情况(但请--dry-run首先尝试)。

但是,除了这种脆弱的设置之外,我建议在LVM的帮助下将两个磁盘组合在一起以形成一个不需要这种技巧的大卷。


谢谢!我更改了脚本,它似乎正在工作。这会给我一点时间-磁盘仍然会趋于充满,但是我有时间转移这些东西。将两者与LVM结合使用是正确的。我已经考虑过了,但是要拖着脚走,因为这意味着先把东西移开,然后再移回去。我想,迟早要好。
unkilbeeg 2014年

我有一个类似的问题,可以通过使用--keep-dirlinks来解决,而没有使用-a选项。至于第三段,“小”烦恼是,我正在使用的文件系统是64 T字节的SAN“磁盘”。虽然有可能将多个文件合并为更大的文件,例如256 TB的驱动器,但我希望管理员有理由相信我们拥有的文件大小。有时,看起来像“骗人的东西”只是在研究如何与所拥有的生活在一起。
user1683793 '18 -10-5

我的最终解决方案是购买新硬件。原始计算机已经足够老,只能支持IDE驱动器,而那时您可以得到的最大驱动器是512G。
unkilbeeg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.