我从一个已安装的磁盘“克隆”到远程安装的另一磁盘。我将它们称为本地和远程。本地是slackware,远程ubuntu在本地
df -h /mnt/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/fedora-root 49G 4.3G 43G 10% /mnt
在远程
df -h /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk1p2 57G 7.2G 47G 14% /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29
从本地使用此命令后,我发现 rsync 未正确完成操作
cd /mnt
for i in * ;do rsync -avP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done
我在本地看到例如
file bin
bin: symbolic link to usr/bin
并在远程..
file /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/
/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/: directory
我希望 bin 在远程销毁,并且它必须成为(与本地一样)符号链接 rsync 的哪个选项?使用:
rsync -avPl rsync -rvPl
不起作用
答案1
-l
( )选项由( )-links
隐含,但您还需要 -K ( ) 以便允许目标目录为符号链接。您可能会发现您还需要纠正现有的结构。-a
--archive
--keep-dirlinks
--delete-before
rsync -avKP --delete --ignore-errors src/ 192.168.0.75:dst/
更仔细地查看您的原始代码,您正在迭代我现在看到的服务器的顶层,包括/bin
和/usr
。在本例中/bin
,是 的符号链接/usr/bin
,但您的代码将其传递给rsync
with $i/
,这相当于/bin/
。因此,rsync
永远不要将其视为符号链接,因为您$i/
已经取消引用它。
删除for
循环并让其rsync
处理完整目录树本身将允许它查看顶级符号链接并正确传输它。
答案2
我找到了一个很好的“解决方法”
而不是做了
cd /mnt
for i in * ;do rsync -avXHhP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done
我愿意
rsync --avXHhP --delete --ignore-errors /mnt/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29 ; done
并且工作,即使在符号链接上,目录也是相同的
编辑:我使用 -avXHhP 进行更正,这对于备份可启动更有利