簡體   English   中英

您知道我如何自動創建備份文件嗎?

[英]Do you know how I can create backup files automatically?

我每天在Ubuntu / Linux上使用命令tar -cpvzf ~/Backup/backup_file_name.tar.gz directory_to_backup/備份文件幾次。 我想創建一個將自動創建文件名的腳本-檢查:

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

如果存在,則將“ _a”替換為“ _b”,然后檢查所有字母,直到z。 創建第一個不存在的備份文件。 如果z之前的所有文件都存在,則在文件名中添加“ _1”(帶有“ _z”)並檢查所有數字,直到文件不存在為止。 切勿更改現有文件,而僅創建新的備份文件。 您知道如何創建這樣的腳本嗎?

你可以做類似的事情

for l in {a..z} ; do
    [[ -f ~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}.tar.gz ]] && continue
    export backupname=-f ~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}.tar.gz && break
done

# test if $backupname is properly set, what if `z` is used? I'm leaving this to you
# then backup as usual

tar -cpvzf $backupname directory_to_backup/

這會遍歷字母,如果所需文件存在,則跳過設置backupname變量的操作。

好的,我找到了解決方案。 我創建了文件~/scripts/backup.sh

#!/bin/bash

working_dir=`pwd`
backupname=""

if [ -z "$backupname" ]; then
    for l in {a..z} ; do
    if [ ! -f ~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}.tar.gz ]; then
        backupname=~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}.tar.gz
        break
    fi
    done
fi

if [ -z "$backupname" ]; then
    l="z"
    for (( i = 1 ; i <= 1000; i++ )) do
    if [ ! -f ~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}_${i}.tar.gz ]; then
        backupname=~/Backup/backup_file_name_`date +"%Y-%m-%d"`_${l}_${i}.tar.gz
        break
    fi
    done
fi

if [ ! -z "$backupname" ]; then
    cd ~/projects/
    ~/scripts/tar.sh $backupname directory_to_backup/
    cd $working_dir
else
    echo "Oops! can't create backup file name."
fi

exit

~/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/backup.sh ,腳本就會備份我的文件。

創建一個腳本來保存日期為

〜/備份/ backup_file_name _ $ {}日期名為.tar.gz

如果要在某個特定間隔后進行備份,請運行該腳本的cron作業,如果沒有此要求,請手動運行該腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM