如何从备份中省略目录

如何从备份中省略目录

我正在尝试编辑备份脚本,以便它对我有用。我的问题是,如果我设置要备份的目录路径,那么它也会备份包含备份的目录:)

剧本: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

我有一个名为的目录/homebackups所以我希望使用说从备份中省略该目录,-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"

相关内容