目前我正在将一个大文件系统移动到一个新的服务器,因为原始的文件服务器不再能够处理文件系统写入。
为了做到这一点,我在指向原始文件系统的目标文件系统上build立了符号链接。
最初:/ company / release(原始文件系统的挂载点)
迁移后:/company/release.old(在automount map更新后指向原始文件系统)/ company / release(在automount map更新后指向新的文件服务器/文件系统)
在/ company / release中有像下面这样的符号链接:/company/release/product-1.0.tar.gz – > /company/release.old/product-1.0.tar.gz /company/release/product-1.0 – > /company/release.old/product-1.0(这是一个文件树)
使用符号链接允许我快速将写入移动到新的文件系统。 现在我想慢慢迁移现有的文件和目录到新的文件系统。
我遇到的问题是,因为符号链接指向原始文件rsync没有看到任何区别,所以它实际上并不复制文件或目录,并删除/覆盖符号链接。
是否有一组rsync标志将做我想要的?
从手册:
-L, --copy-links transform symlink into referent file/dir
-a参数将做你想做的,复制符号链接(除其他外),所以目的地将是源的“档案副本”。
注意: -a标志看起来很像rsync -a标志(因为它保留了所有的属性,date和时间),在复制之前不要删除目标,所以它复制了任何现有的符号链接到他们指向的任何地方。
例子:*文件a , b , c带有“one”,“two”和“three”string,然后将符号链接aa指向a.*
用cp -ac aa ,你会以“三”结尾,这看起来真的是错误的,直到你意识到他们正在做POSX,这意味着最低的共同点。
使用rsync -ac aa ,符号链接aa将replace为包含“three”的文件, a保留未损坏的文件。