我目前正在建立一个网站,其中包括一个拥有数百万资产的 CMS。主要是小图片和大图片。我想定期备份这些文件。例如每周。我的机器上安装了一个 FTP,我可以将其复制到其中。昨天我想到使用 rsync 并只复制新文件。但 rsync 似乎需要花很长时间才能爬过所有文件。基本上需要很长时间,因为 FTP 存储很差。所以我最终想到在我的资产目录中仅查找最新修改(最近 24 小时)的文件并将它们复制到 FTP。以尽量减少 FTP 上的负载。但我对 bash 脚本还不熟悉,当然谷歌已经帮助了我,我想出了以下部分:
#!/bin/bash
Source="/my/source/folder"
Destination="/my/slow/ftp/"
ls find $Source -mtime -1 -ls
do
cp -a $Source $Destination
done
我遗漏了什么?你能帮我完成吗?
如果我对备份增量的想法不是最佳的,请随时提出其他建议。
答案1
您可以一次性完成此操作find
。
对于这种需要时间精度的任务,请使用-mmin
选项find
以分钟为单位来表示时间限制,而不是以-mtime
天为单位来表示。
find /source -mmin -1441 -exec cp -a -t /destination {} +
这将复制从现在起过去 24 小时(1440 分钟)内修改的文件,从/source
到/destination
。
要复制到远程服务器,请使用rsync
,因为它将恢复任何部分传输(与不同scp
):
find /source -mmin -1441 -exec rsync -a {} user@host:/destination/ \;