我正在尝试编辑备份脚本,以便它对我有用。我的问题是,如果我设置要备份的目录路径,那么它也会备份包含备份的目录:)
剧本:https://github.com/todiadiyatmo/bash-backup-rotation-script/blob/master/backup_rotation.sh
目前我分配的大部分空间位于/home
root@encorepvp:/home/jo# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 20G 2.3G 16G 13% /
devtmpfs 32G 4.0K 32G 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 6.3G 1.5M 6.3G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 4.0K 32G 1% /run/shm
none 100M 0 100M 0% /run/user
/dev/md3 1.8T 29G 1.7T 2% /home
我有一个名为的目录/home
,backups
所以我希望使用说从备份中省略该目录,-x /home/backups
我将如何实现这个?
答案1
我有一个名为的目录,
/home
所以backups
我希望使用 say 从备份中省略该目录-x /home/backups
。我将如何实施这个?
要实施这一点,您需要查看剧本并找到用于进行目录备份的相关行:
# Compress tables and files
cd $TARGET_DIR
tar -czf $BACKUP_DIR/backup.incoming/$backup_filename -C $BACKUP_DIR/backup.incoming/ mysql_dump.sql $TARGET_DIR
你会发现它使用了tar
,所以你会查找tar 的手册页并确定排除选项是--exclude
而不是x
。然后,您可以将更改应用到文件并测试它。
在脚本的上下文中,使用声明备份目录的变量 .而不是排除固定目录是有意义的$BACKUP_DIR
。
tar -czf $BACKUP_DIR/backup.incoming/$backup_filename -C $BACKUP_DIR/backup.incoming/ --exclude $BACKUP_DIR mysql_dump.sql $TARGET_DIR
当您编辑脚本时,如果您(简单地)修改脚本的大部分内容,以便它可以处理包含空格和其他奇怪内容的目录名称,那就更好了。您可以通过引用大多数变量来做到这一点。例如,该tar
部分将变为:
# Compress tables and files
cd "$TARGET_DIR"
tar -czf "$BACKUP_DIR/backup.incoming/$backup_filename" -C "$BACKUP_DIR/backup.incoming/" --exclude "$BACKUP_DIR" mysql_dump.sql "$TARGET_DIR"