我想知道在 Linux 中是否可以使用一个命令创建多个目录的备份。具体来说是托管在 VPS 上的不同网站。
假设我在 /var/www 中有四个网站:
/var/www/site01
/var/www/site02
/var/www/site03
/var/www/site04
我想使用 tar 压缩每个目录。是否可以使用单个命令将 /var/www 中的每个子目录压缩到其自己的单独存档中?
site01.tar、site02.tar、site03.tar、site04.tar
答案1
如何创建tar
多个目录?
自动化!
正如@Seth 在评论中提到的那样,如果您的目标是减少不必要的输入,那么脚本就是您要走的路。
/bin/bash #!/bin/bash # backup_dirs_to_tars.sh - 将 $backupdir 中的目录备份到 # $outputdir 中的各个 tar # NB 忽略 .hidden(带点)目录 备份目录=/var/www/ outputdir=/home/example/backups cd $备份目录 对于目录 */;做 tar -cf "$outputdir/$(basename $dir).tar" "$dir" 完毕
解释:
- 改成
$backupdir
for dir in */
循环遍历目录($backupdir
由于尾随/
)- 在指定目录中创建
tar
每个目录的存档(以目录命名)basename
$outputdir
如果您愿意,您当然可以gzip
通过将创建行更改为来创建 ped 档案tar -czf "$outputdir/$(basename $dir).tar.gz" "$dir"
。
关于备份的更广泛思考(其他资源)
我不知道你用备份方案想要达到什么目的,但值得注意的是rdiff-backup
(使用rsync
和增量)和rsnapshot
(使用硬链接来节省不变的文件的空间);两者都易于使用,并根据您的使用方式提供文件的“旧版本”。
同样值得记住的咒语是:“未经测试的备份不是备份”。确保您可以从备份中恢复!rdiff-backup
和都rsnapshot
提供了可以立即浏览的工作集,这对于验证备份确实有效很有用。
答案2
我使用类似的策略将工作中的 Linux 服务器备份到 Windows 共享文件夹。基本上,我备份 www、/etc/apache2 和 MySQL 数据库中的内容。我设置了一个 cron 作业来自动执行此操作,它已经自行运行多年了。以下是我执行此操作的方式 https://ittutorials.net/linux/ubuntu/how-to-backup-ubuntu-to-a-windows-share/