数码工坊
白蓝主题五 · 清爽阅读
首页  > 数据备份

用bash脚本轻松搞定文件移动,备份不再手忙脚乱

每天下班前都要手动把项目日志从开发机挪到备份服务器?时间一长,不是忘了就是拖沓成堆。与其一遍遍点鼠标或者敲命令,不如写个简单的bash脚本,让系统自动帮你搬文件

一个实用的移动脚本长啥样

比如你有一堆下载好的资料都堆在~/Downloads里,想按类型分门别类挪走。下面这个脚本能把所有PDF文件移到文档备份目录:

#!/bin/bash

# 定义源目录和目标目录
src_dir="~/Downloads"
dest_dir="~/Backup/PDFs"

# 创建目标目录(如果不存在)
mkdir -p $dest_dir

# 移动所有PDF文件
mv $src_dir/*.pdf $dest_dir/ 2>/dev/null || echo "没有PDF文件可移动"

保存为move_pdfs.sh,加上执行权限:chmod +x move_pdfs.sh,运行一下就完事了。

结合定时任务,彻底解放双手

光会跑一次还不够,真正的省心是让它定期自己动。配合cron,可以每天凌晨自动整理一次下载目录。

输入crontab -e,加一行:

0 2 * * * /home/yourname/scripts/move_logs.sh

这表示每天两点整执行你的移动脚本。日志、临时文件、截图,全都能按时归位。

小心这些坑

mv命令时要注意路径别写错,一不小心可能把文件移到不该去的地方。特别是带变量的脚本,建议先用echo打印要执行的命令看看对不对。

echo "mv $src_file to $dest_dir"

确认无误后再真正执行。另外,如果目标位置已有同名文件,mv会直接覆盖,不想丢数据的话,可以用mv -i让它询问确认。

实际场景:服务器日志归档

公司内网有台监控服务器,每天生成一堆日志。我们可以写个脚本,把前一天的日志打包并移到NAS上:

#!/bin/bash

log_dir="/var/log/app"
backup_dir="/mnt/nas/logs/$(date -d yesterday +%Y%m%d)"

mkdir -p $backup_dir

# 移动昨天的日志(假设文件名含日期)
yesterday=$(date -d yesterday +%Y-%m-%d)
mv $log_dir/*$yesterday*.log $backup_dir/ && echo "已完成 $yesterday 日志归档"

这类操作在数据备份栏目里很常见,既节省本地空间,又保证关键信息不丢失。

写bash脚本搬文件,不一定要多复杂。一个几行的脚本,就能解决重复劳动。关键是理清你要搬什么、从哪来、到哪去,再配上合适的触发方式,自动化其实就这么简单。