이중성을 사용하여 디렉터리 백업을 수행하는 스크립트가 있습니다. "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