Macos Rsync bash脚本和硬链接文件

Macos Rsync bash脚本和硬链接文件,macos,bash,backup,rsync,hfs,Macos,Bash,Backup,Rsync,Hfs,我正在创建一个bash脚本,用rsync备份我的文件 所有备份都来自一个目录。 我只希望备份新的或修改过的文件 目前,我正在告诉rsync备份dir,并检查与上次备份相比的文件 我这样做的方式是 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 /B

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

所有备份都来自一个目录。 我只希望备份新的或修改过的文件

目前,我正在告诉rsync备份dir,并检查与上次备份相比的文件

我这样做的方式是

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
我很确定我的语法是正确的。每次备份都将对照“当前”文件夹进行检查,并仅在必要时上载。然后,它将删除当前文件夹,并重新创建符号链接到它刚才所做的最新备份

我运行脚本时出错:

=>/Backup/Current/dgs1200series\u manual\u 310.pdf 失败:不支持操作(45)

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

谢谢你的帮助

编辑:

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


我猜这是afp的局限性

手册页中有两件事值得检查:

如果文件未链接,请仔细检查其属性。阿尔索 检查某些属性是否被强制超出rsync的范围 控件,例如将根压缩到单个 用户,或安装具有通用所有权的可移动驱动器(如 作为OS X的“忽略此卷的所有权”选项)

请注意,2.6.1之前的rsync版本有一个可能导致 阻止--link dest对非超级用户正常工作 当指定了-o(或由-a暗示)时。你可以到处工作 通过在发送到旧rsync时避免使用-o选项,可以避免此错误

是否打开了“忽略所有权”选项?您有什么版本的
rsync


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

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

尝试重新配置
date
命令,使其不使用冒号,并查看这是否会产生影响

e、 g


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

rsync版本2.6.9协议版本29,我已经通过命令行成功创建了完全相同的链接。我将在这里给其他选项一次机会,非常感谢。@David:硬链接不能从一个文件系统到另一个文件系统。这很奇怪。出于某种原因,将目标指定为./myfile不起作用,但/Users/dankle/myfile起作用。。。无论如何,它是这样工作的+1:)@Daniel,它将使用相对路径,但诀窍是它需要相对于目标目录。因此,在您的情况下,它可能类似于“./myfile”。
rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"
THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`