私のバックアップスクリプトに問題があります。 を使用して、for
ループを使用して、指定されたディレクトリ内のすべてのものをアーカイブします。それはディレクトリを完全にリストし、それぞれのディレクトリごとに別々のアーカイブを作成しますが、変数はバックアップするディレクトリへのパスをリストしていません。誰にでも、変数に正しい情報が入力されていることを確認する方法のアイデアを教えてもらえますか?ここで バックアップスクリプトの作成に関する問題
#!/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'コマンドの前に)。ありがとう!!! –