将第一个目录中的较新文件打包成 tar,但忽略第二个目录中的 mtime

将第一个目录中的较新文件打包成 tar,但忽略第二个目录中的 mtime

我正在尝试备份服务器上的一些文件tar,但似乎无法让它做我想做的事情。我在 Google 上搜索解决方案,但似乎找不到合适的解决方案。我希望/home/me/mysqlDumpFiles仅包含 1 小时前更新的文件,但我希望/var/www包含所有文件,无论它们是何时修改的。

dateNow=$(date +%m_%d_%y-%H.%M.%S) tar czf /home/me/backups/backup-$dateNow.tar.gz /home/me/mysqlDumpFiles --newer-mtime "1 hour ago" /var/www

我感激所得到的任何帮助。

编辑:我最终制作了自己的 shell 脚本,并使用两个单独的 tar 命令运行它

#!/bin/bash
set -e
currentDate=$(date +%Y-%m-%d_%H.%M.%S)

printf "currentDate is $currentDate\n========================================\n"
mkdir /home/me/backupTemp;
mysqldump -uroot -p[CENSORED] [DATABSE_NAME]> /home/me/backupTemp/site.net.sql;
tar -jcf /home/me/mysqlDumpFiles/site.net-$currentDate.tar.bz2  -C /home/me/backupTemp .;
tar -jcf /home/me/backups/backup-$currentDate.tar.bz2 -C /home/me/backupTemp . -C /var/www .;
rm -rf /home/me/backupTemp;
printf "========================================\n"

答案1

你可以将档案分开:

dateNow=$(date +%m_%d_%y-%H.%M.%S)
tar czf ~/backups/mysql-$dateNow.tar.gz ~/mysqlDumpFiles/ --newer-mtime "1 hour ago" 
tar czf ~/backups/www-$dateNow.tar.gz /var/www/

或者您可以使用-r( --append,将文件附加到档案末尾)将文件夹添加到同一个档案中:

dateNow=$(date +%m_%d_%y-%H.%M.%S)
tar cf ~/backups/backup-$dateNow.tar ~/mysqlDumpFiles/ --newer-mtime "1 hour ago"
tar rf ~/backups/backup-$dateNow.tar /var/www/
gzip ~/backups/backup-$dateNow.tar

答案2

您需要执行两个单独的 tar 命令来实现这一点。

相关内容