两台 Linux 机器之间奇怪的 Rsync 行为 - 已解决

两台 Linux 机器之间奇怪的 Rsync 行为 - 已解决

机器 A:Debian 测试版(SparkyLinux 6)rsync 3.1.3
机器 B:Ubuntu Ubuntu 16.04.6,rsync 3.1.1

我有一个 bash 脚本,用于将目录备份到网络连接的机器。我尝试过备份到已安装的目录 (CIFS) 或通过 rsync (由目标上的 root 运行的 rsync 守护进程)。这两个文件系统都是 ext4。两者都以 RW、defaults 的形式安装在 fstab 中。

我的 bash 脚本检查两个目录是否存在,然后运行(以 root 身份):

rsync -artzsv --force --delete --exclude=.Trash* --exclude=lost+found* /media/dcarrco/raid /media/bigdisk

例如,源目录的权限为:

drwxr-x---   8 dcarrco dcarrco 4.0K Feb  4  2013  dev  
-rw-rw-r--   1 dcarrco dcarrco  32G Nov  8 09:32  data.dat  
-rw-rw-r--   1 dcarrco dcarrco 114K Sep 22  2016  flower.jpeg

一旦我运行 rsync(在 CIFS 挂载目录上或通过守护进程),目标驱动器就会有:

drwxr-xr-x 2 dcarrco dcarrco    0 Feb  4  2013  dev  
-rwxr-xr-x 1 dcarrco dcarrco  32G Feb 14  2019  data.dat  
-rwxr-xr-x 1 dcarrco dcarrco 114K Sep 22  2016  flower.jpeg  

因此,现在每个传输的文件上都设置了执行位。下次我运行 rsync 时,它会再次传输所有相同的文件(因为执行位不在源上,而在目标上)。

所以我尝试删除目标上的目录并进行全新备份。这很有效。然后它(叹气)下次再次复制了所有内容。

所以我将源上的每个文件都设置为执行位。rsync 没有复制任何内容并说它是最新的。

我使用 运行了 rsync --itemize-changes,但文件上只有可执行位。一遍又一遍。有什么想法吗?

编辑:这最终是 samba 问题,而不是 rsync。我不知道为什么 rsync 守护进程上的 rsync 遇到同样的问题,但是一旦我将 file_mode=0644,dir_mode=0755 添加到 fstab 中的 CIFS 行,它就会按预期工作。

答案1

这是 samba 服务器设置此 x 属性。我不记得设置名称,但它可能与映射 DOS 系统和/或隐藏属性或强制 Windows 文件的可执行状态有关。查看 smb.conf 手册页。

顺便说一句,我认为将 Unix/Linux 文件系统备份到 CIFS 文件系统并不是最好的主意。您不能使用 NFS 吗?

相关内容