[英]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.