我编写了这个备份脚本,它查找文件并将最近的文件复制到文件夹中。
#!/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 中有一个匹配的文件名,则应:
- 在 $filename 中,将前导 $i 替换为空
- 使用以下方法在结果 1 中找出 $dir_name目录名
- 将尾随的 $copyLocation 附加到 $dirname 并将其用作mkdir -p创建缺失的目录
- 将 $filename 复制到 "$copyLocation/$dirname"
我还将建议另一种文件同步替代方案:齐奏. 它比 rsync 更容易使用。
答案2
答案3
可能有点离题,但你可能想看看备份工具。在转向 BoxBackup 之前,我使用 rsync 脚本很长时间,它确实让事情变得更容易 - 尤其是“内务管理”...