Rsync bash脚本和硬链接文件

时间:2010-08-04 16:33:30

标签: macos bash backup rsync hfs

我正在创建一个bash脚本来使用rsync备份我的文件。

备份都来自单个目录。 我只想要备份新的或修改过的文件。

目前,我告诉rsync备份目录,并检查文件与上次备份的比较。

我这样做的方式是

THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current

我很确定我的语法正确。每个备份将检查“当前”文件夹,并仅作为必要时上载。然后它将删除当前文件夹,并重新创建符号链接到它刚刚执行的最新备份。

运行脚本时出错:

rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"
     

=> /Backup/Current/dgs1200series_manual_310.pdf   失败:不支持操作(45)

主机操作系统正在运行HFS文件系统,它支持硬链接。我试图找出其他东西是不支持这个,或者我的代码中是否有问题。

感谢您的帮助

编辑:

我可以在本地计算机上创建硬链接。 我也能够在远程服务器上创建硬链接(在本地登录时) 通过afp挂载时,我无法在远程服务器上创建硬链接。即使服务器上存在这两个文件。

我猜这是afp的限制。

3 个答案:

答案 0 :(得分:3)

以防万一您的命令行只是一个示例:请务必始终使用绝对路径名指定link-dest目录!这让我花了很长时间才弄明白......

答案 1 :(得分:1)

手册中的两件事情值得一提:

  

如果文件未链接,请仔细检查其属性。也                 检查是否有一些属性被强制在rsync之外                 控制,这样一个挂载选项,可以将root转换为单个                 用户,或安装具有通用所有权的可移动驱动器(例如                 作为OS X的“忽略对此卷的所有权”选项)。

  

请注意,2.6.1之前的rsync版本有一个错误                 防止--link-dest为非超级用户正常工作                 当-o被指定(或由-a暗示)时。你可以解决                 发送到旧的rsync时避免使用-o选项。

您是否启用了“忽略所有权”选项?您有rsync的哪个版本?

另外,您是否尝试在命令行使用ln手动创建类似的硬链接?

答案 2 :(得分:1)

我不知道这是否是同一个问题,但我知道当目标是FAT32分区并且文件名中包含“:”(冒号)时,rsync无法同步文件。 [源文件系统是ext3,目标是FAT32]

尝试重新配置date命令,使其不使用冒号,看看是否有所作为。

e.g。

THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`
相关问题