场景

  • 自用linux系统装在一块不是太稳定的硬盘里,很多服务启动脚本、docker容器脚本需要定期备份到另一块硬盘上
  • 硬连接不适用于文件夹、跨盘连接
  • 软链接在源文件丢失、挂掉的情况下会失效

解决方案

  • 使用简单的一个shell脚本向目标位置复制需要备份的文件(夹)
  • crontab是linux提供的定时任务,搭配上述脚本实现每xx时间自动执行shell脚本

脚本

 services=( \
"path/to/some/file/or/folder" \
"path/to/another/file/or/folder" \
)

destination="/path/to/destination/folder/"

for elem in ${services[@]}
do
    echo "# Backuping $elem"
    cp -r $elem $destination
done

echo "--------------------------------"
date
echo "- All backup task completed! -"
echo "--------------------------------"
echo "--------------------------------"
echo -e "\n\n"

设置定时任务

  • 打开定时任务编辑 crontab -e
  • 添加任务
# backup all of my services at 3:50 every day
50 3 * * * bash /path/to/backup_services.sh >> /path/to/backup.logs 2>&1 &
  • 保存查看crontab -l