如何创建tar多个目录?

如何创建tar多个目录?

我想知道在 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/

相关内容