如何防止tar覆盖现有存档?

时间:2014-02-10 15:03:57

标签: linux shell tar

我使用命令tar -cpvzf ~/Backup/backup_file_name.tar.gz directory_to_backup/在Ubuntu / Linux上每天备份几次文件(文件名包含YYYY-MM-DD格式的日期和a到z的字母 - a是第一个备份这个日期等。)但我想创建一个新的存档,如果它已经存在,则不会覆盖该存档。如何防止tar覆盖现有存档?如果存档存在,我希望tar退出而不做任何事情(如果可能,显示错误消息)。

2 个答案:

答案 0 :(得分:7)

事先检查文件是否存在:

if [ -f ~"/Backup/[backup_file_name].tar.gz" ]; then
    echo "ooops backup file was already here"
    exit
fi
tar -cpvzf ~/Backup/[backup_file_name].tar.gz directory_to_backup/

请注意,如果您希望扩展~,则$1必须在双引号之外。


更新

  

感谢。您知道如何将归档文件名和目录设置为   备份为命令行参数?文件名包括完整的   路径。

您可以使用$2if [ -f $1 ]; then echo "ooops backup file was already here" exit fi tar -cpvzf $1 $2 等来指示参数。例如:

./script.sh file backup_dir

然后用:

调用脚本
{{1}}

答案 1 :(得分:0)

我创建了文件~/scripts/tar.sh

#!/bin/bash

if [ -f $1 ]; then
    echo "Oops! backup file was already here."
    exit
fi
tar -cpvzf $1 $2 $3 $4 $5

现在我只需输入:

~/scripts/tar.sh ~/Backup/backup_file_name_`date +"%Y-%m-%d"`_a.tar.gz directory_to_backup/

如果文件不存在,则会创建备份文件。