如何编写脚本来备份 Bash 中最近修改的文件?

如何编写脚本来备份 Bash 中最近修改的文件?

我编写了这个备份脚本,它查找文件并将最近的文件复制到文件夹中。

#!/usr/bin/bash

# the number of days to do the backup for.
days=2;

# the files to backup.
location[0]='/opt/location'

# the location to copy the file to
copyLocation='/users/me/Backup/firstBackupScriptTry'

# preform the back up
for i in ${location[*]}
do
        find $i \! -name '*.class' -mtime -$days \! -type d -exec cp {} $copyLocation \;
done

虽然可以工作,但是用处不大。

我希望脚本在复制时保留目录结构。即我希望它这样做:cp -r from to但只复制最近的文件。

答案1

一种方法是修改运行 find 时获得的文件名。因此,在循环中,如果 $filename 中有一个匹配的文件名,则应:

  1. 在 $filename 中,将前导 $i 替换为空
  2. 使用以下方法在结果 1 中找出 $dir_name目录名
  3. 将尾随的 $copyLocation 附加到 $dirname 并将其用作mkdir -p创建缺失的目录
  4. 将 $filename 复制到 "$copyLocation/$dirname"

我还将建议另一种文件同步替代方案:齐奏. 它比 rsync 更容易使用。

答案2

同步是专为此任务而设计的。检查例子使用页面。

答案3

可能有点离题,但你可能想看看备份工具。在转向 BoxBackup 之前,我使用 rsync 脚本很长时间,它确实让事情变得更容易 - 尤其是“内务管理”...

相关内容