二重性を使用してディレクトリバックアップを実行するスクリプトがあります。 "for"ループからいくつかのサブディレクトリを除外しようとしています。どうやってこれを達成できますか?
現在のスクリプト
backup_volume() { TARGET_URL=$1
for vol in /dir/*; do
VOLUME=$(basename $vol)
duplicitiy backupcommand...
done
}
/dir/内に除外したいサブディレクトリがあります。どんなアドバイスでもいただければ幸いです!
ベストアンサー1
duplicity
除外ディレクトリを学ぶ
duplicity --exclude=/dir/somedir/someotherdir/dontbackup ...other options...
/dir
(全体をバックアップするために一度実行されます)
各サブディレクトリに対して別々のバックアップを作成する必要がある場合は、/dir
まずパターンを使用してサブディレクトリが一致していることを確認して/dir/*/
から、避けたいファイル名とディレクトリのファイル名をテストします。
for vol in /dir/*/; do
case $vol in
*/somedirectory/) continue ;;
*/someotherdirtory/) continue ;;
esac
volume=$( basename "$vol" )
duplicity ...
done
または、
for vol in /dir/*/; do
volume=$( basename "$vol" )
case $volume in
somedirectory) continue ;;
someotherdirtory) continue ;;
esac
duplicity ...
done
または、
for vol in /dir/*/; do
volume=$( basename "$vol" )
case $volume in
somedirectory|someotherdirectory|more here) continue ;;
esac
duplicity ...
done
または、拡張グロービングモードを使用してくださいbash
。
shopt -s extglob
for vol in /dir/!(somedirectory|someotherdirectory|...)/
volume=$( basename "$vol" )
duplicity ...
done