为了避免数据丢失,决定使用Python脚本来实现定期备份博客的内容。
以下是需要实现的具体内容:
- 每周日晚上11点30开始自动备份
- 将Blog目录下面的所有文件打包压缩后,复制到指定的备份目录下方
- 备份的文件名格式为:
backup-timestamps.tar.gz
,例如:backup-2021-09-21_132517.tar.gz
以下是具体的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tarfile
import os
from datetime import datetime
from shutil import copy, rmtree
# 指定源文件夹路径,例如:/var/log
src_folder = '/home/pi/blog'
# 指定目标文件夹路径, 例如:/home/backup
dst_folder = '/media/pi/D1T/backup/blog'
# 备份开始的时间戳
timestamp = datetime.now().strftime('%Y-%m-%d_%H%M%S')
# 指定备份的文件名
filename = 'backup'
full_filename = '%s/%s-%s.tar.gz' % (src_folder, filename, timestamp)
tar = tarfile.open(full_filename, "w:gz")
os.chdir(src_folder)
for name in os.listdir("."):
tar.add(name)
tar.close()
copy(full_filename, dst_folder)
为了能实现定期的自动备份,需要使用Linux系统的计划任务工具Crond。
以下是配置计划任务的格式,从左往右的顺序为:分钟、小时、日、月、周。
# * * * * * command to execute
# ┬ ┬ ┬ ┬ ┬
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ └───── day of week (0 - 7) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
# │ │ │ └────────── month (1 - 12)
# │ │ └─────────────── day of month (1 - 31)
# │ └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)
为了能实现每周日晚上11点30开始自动备份,需要执行命令crontab -e
,然后配置以下内容:
30 23 * * 7 /usr/bin/python3 /home/pi/python/backup_blog.py
网友评论