我的備份腳本存在一些問題。它使用for
循環來使用tar
對給定目錄內的任何內容進行歸檔。它完美地列出了這些目錄,併爲每個目錄創建了獨立的存檔,我希望它們如何,但該變量未列出要備份的目錄的路徑。任何人都可以給我一個如何確保變量填充正確信息的想法嗎?備份腳本創建存檔問題
這裏的腳本:
#!/bin/bash
set -xv
dirs=$(ls /home/phoenix/testarchive)
dest="/home/phoenix/backup/"
archive=".tar.bz2"
clear
echo "Archiving data..."
for dirs in $dirs
do
echo "Archiving $dirs..."
tar cjf "${dest}${dirs}_$(date +%F)${archive}" $dirs
echo "Archive complete!!"
done
echo "All archives created!!"
echo "Test created archive to ensure validity."
ls -lh $dest
這裏是我的錯誤輸出:
echo "Archiving data..."
+ echo 'Archiving data...'
Archiving data...
for dirs in $dirs
do
echo "Archiving $dirs..."
tar cjf "${dest}${dirs}_$(date +%F)${archive}" $dirs
echo "Archive complete!!"
done
+ for dirs in $dirs
+ echo 'Archiving folder1...'
Archiving folder1...
++ date +%F
+ tar cjf /home/phoenix/backup/folder1_2017-07-18.tar.bz2 folder1
tar: folder1: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
+ echo 'Archive complete!!'
Archive complete!!
+ for dirs in $dirs
+ echo 'Archiving folder2...'
Archiving folder2...
++ date +%F
+ tar cjf /home/phoenix/backup/folder2_2017-07-18.tar.bz2 folder2
tar: folder2: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
+ echo 'Archive complete!!'
Archive complete!!
echo "All archives created!!"
+ echo 'All archives created!!'
All archives created!!
echo "Test created archive to ensure validity."
+ echo 'Test created archive to ensure validity.'
Test created archive to ensure validity.
ls -lh $dest
+ ls -lh /home/phoenix/backup/
total 8.0K
-rw-r--r-- 1 phoenix phoenix 46 Jul 18 13:48 folder1_2017-07-18.tar.bz2
-rw-r--r-- 1 phoenix phoenix 46 Jul 18 13:48 folder2_2017-07-18.tar.bz2
腳本,就像我提到的,被命名正是我想要的,但實際的數據歸檔ISN」沒有創造。我敢肯定ls
是問題,但我不知道任何其他方式獲得所需的結果...
您可以在循環前使用'cd/home/phoenix/testarchive'或在引用循環內的源目錄時使用絕對路徑。我認爲'cd'ing更好。 – codeforester
這也適用!當我使用'cd'測試時,我必須將它放在錯誤的位置(可能在'clear'命令之前)。謝謝!!! –