Linux定期备份数据

文章作者:Tyan
博客:noahsnail.com  |  优快云  |  简书

1. 引言

工作中经常会碰到对数据进行备份的需求,常用的数据同步命令是rsync。有时候需要定期备份数据,每次手动备份数据太麻烦,因此通常会设置一个定时任务来执行数据备份,常用的定时任务命令是crontab

2. rsync命令

rsync命令可以实现本地与远程服务器的数据同步,包括本地同步到远程以及远程同步到本地,数据备份通常是把本地的数据同步到远程服务器上。数据同步脚本rsync_data.sh如下:

#!/bin/sh

date
rsync -a -e ssh --progress /data user@server_address:/data

相关参数的含义可以参考文末的链接,同步的数据地址及远程服务器地址需要修改为自己的地址。

注意:数据同步脚本rsync_data.sh需要具有在定时任务执行时的执行权限,使用chmod +x命令使脚本具有可执行权限。

3. crontab命令

crontab命令是用来设置定时任务的,可以以固定的间隔时间执行Linux命令或shell脚本。crontab -l可以用来查看已有的定时任务列表,crontab -e可以用来设置自己的定时任务。

4. 定期备份数据

定期备份数据的命令如下:

# 查看数据定时同步任务
$ crontab -l
0 0 6 * * /workspace/rsync_data.sh > /workspace/rsync_data.log 2>&1

0 0 6 * *表示每个月的6号0点0分,执行脚本为/workspace/rsync_data.sh,执行脚本之后的输出日志写入/workspace/rsync_data.log文件中。

参考资料

  1. https://man.linuxde.net/rsync
  2. https://www.cnblogs.com/f-ck-need-u/p/7220009.html
  3. https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html
  4. https://tool.lu/crontab/
### 设置 Linux Cron Job 定期备份 MySQL 数据库并上传至 Synology NAS 为了实现这一目标,可以编写一个 shell 脚本用于执行数据备份操作,并通过 `cron` 来定时调用此脚本。下面是一个详细的方案。 #### 编写 Shell 备份脚本 创建一个新的 shell 文件 `/home/user/mysql_backup.sh` 并赋予可执行权限: ```bash #!/bin/bash # Define variables DATE=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="/path/to/local/backup/folder" MYSQL_USER="your_mysql_username" MYSQL_PASSWORD="your_password" DATABASE_NAME="database_name_to_backup" # Create backup directory if it does not exist mkdir -p $BACKUP_DIR # Perform the database dump using mysqldump command and save to a file with timestamped name. mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD $DATABASE_NAME | gzip > "$BACKUP_DIR/$DATABASE_NAME-$DATE.sql.gz" # Upload the compressed SQL file via rsync or scp (assuming SSH keys are set up between server and NAS). rsync -avz -e ssh "$BACKUP_DIR/$DATABASE_NAME-$DATE.sql.gz" user@synology_nas_ip:/volume1/path/on/nas/ # Optionally remove old backups locally after successful upload, keeping only X days of history. find $BACKUP_DIR/* -mtime +7 -exec rm {} \; ``` 上述脚本定义了一系列变量来配置备份路径、用户名密码以及要备份的具体数据库名称;接着利用 `mysqldump` 命令导出数据表结构及其内容到本地磁盘上指定位置,并压缩文件以节省空间[^1]。之后借助于 `rsync` 或者 `scp` 将这些备份文件传输给远程的 Synology 设备上的特定目录下。最后还可以选择清理过期的日志条目保持存储整洁有序。 #### 配置 Crontab 计划任务 编辑当前用户的 crontab 文件以便安排周期性的作业计划: ```bash crontab -e ``` 向其中添加一行如下所示的内容用来每天凌晨两点钟触发一次备份过程(可以根据实际需求调整时间): ```text 0 2 * * * /home/user/mysql_backup.sh >> /var/log/mysql-backup.log 2>&1 ``` 这行命令表示每晚2点运行该shell脚本并将输出重定向保存在一个日志文件里方便日后查看是否有任何错误发生。 #### 注意事项 - 确认已经安装了必要的工具包如 `mysql-client`, `gzip`, 和 `rsync`. - 如果打算采用SCP方式进行同步,则需提前完成SSH密钥认证设置以免每次都需要输入密码。 - 对敏感信息比如MySQL账户凭证采取适当的安全措施加以保护,例如使用环境变量而非硬编码形式存放在源码内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值