我有一台安装了 Windows 7 共享的 Linux 机器。Linux 机器有一个 cron 任务,用于将 Win7 共享的内容复制到 Linux 机器上的另一个位置 - 备份。
脚本运行很简单rsync -a etc....
我在局域网外有另一个 Linux 机器,它rsync
在 Linux 机器之间运行相同的命令在将 LAN 接回 Linux 机器外部LAN——第二个备份。
问题是该rsync
命令似乎没有更新自上次运行以来已更改的文件rsync
。我有一个文件知道在 Windows 机器上已经更改,而在 Linux 机器上仍然是旧版本。我想知道该rsync
命令是否查看文件夹的时间戳,如果没有更改,则跳过整个目录。或者也许发生了其他事情?
为什么没有rsync
使用新的时间戳来更新文件?
谢谢
编辑——添加更多细节:
我运行的命令是这样的:
rsync --ignore-existing --delete --stats --progress -a /hqserver/ /company_data/HQ_Backups/Day
我的设置:
在 LAN 中,有一台 Windows 7 机器保存着公司数据。用户从他们的计算机中使用该共享进行工作。LAN 中有一个 Linux 机器,用于将samba
相同的 Windows 7 共享和rsyncs
共享内容安装到 Linux 机器上的另一个位置。然后,LAN 外还有另一个 Linux 机器,它运行相同的rsync
命令将内部 Linux 机器内容复制到自身。
cron 任务以 root 身份运行该命令。以下是 crontab:
00 2 * * * root python /home/garfonzo/Backup_Scripts/BU_Script.py
包含BU_Script.py
命令rsync
。
以下是ls
发送备份的文件夹:
drwxrwxrwx 9 garfonzo garfonzo 4096 2011-12-03 02:00 HQ_Backups/
编辑2
哇哇哇......--ignore-existing
旗帜是我的问题的根源吗!?
答案1
显然问题出在--ignore-existing
选项上,该选项的意思是“跳过更新接收方上存在的文件”(根据 man rsync(1))。删除该选项,一切都会按预期运行。
您还可以考虑使用rdiff-backup
(http://www.nongnu.org/rdiff-backup/)进行增量备份。
答案2
您能否包含您正在运行的完整、准确的 rsync 命令(两个命令)?rsync 有几个选项(--ignore-times 和 --size-only)可能会导致文件无法传输,但听起来您没有使用这些选项。此外,有关您的文件共享设置的更多详细信息:您是否使用 Samba?cronjob 是否以 root 身份运行?文件是否由任何一台 Linux 机器上的 root 拥有?权限是什么样的?
要查看发生了什么,请手动运行脚本并添加“-vv”和“--progress”以查看跳过的内容及其原因。