어떤 백업을 하고 싶나요?
- ,,, 가 포함된 사용자 홈 디렉터리를
Desktop
각 사용자별로 백업해야 합니다.Documents
Pictures
thunderbird
/home
모든 사용자는 각자의 사용자 이름을 가진 파티션 에 있습니다./home
제외해야 할 특정 사용자와 파일이 있습니다.
나는 지금까지 무엇을 시도했는가?
$ tar cvf home01 -T include /home
노트:T는 파일에 언급된 내용만 취하지만 작동하지 않음을 의미합니다.
$ find . \( -name \*Desktop -o -name \*Documents\* -o -name \*Pictures\* -o -name \.thunderbird\* \) |
xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip
노트:멘션 디렉터리를 백업하지만 각 사용자의 디렉터리를 폴더에 넣습니다.
예를 들어
$ ls -l /home
/home/user1/{Desktop,Documents,Pictures,.thunderbird}
/home/user2/{Desktop,Documents,Pictures,.thunderbird}
/home/user3/{Desktop,Documents,Pictures,.thunderbird}
/home/user4/{Desktop,Documents,Pictures,.thunderbird}
/home/user5/{Desktop,Documents,Pictures,.thunderbird}
홈 디렉토리 백업을 수행하고 해당 항목에서 제외 user1
하면 됩니다 .user2
user3
user4
user5
답변1
거의 다 왔어요! 이렇게 해야 합니다:
tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.zip */{Desktop,Documents,Pictures,.thunderbird} --exclude=user4 --exclude=user5
답변2
명령 사용법을 보존하는 방법은 다음과 같습니다 find
.
$ find . \( -type d -path */Desktop -o -path */.thunderbird -o -path */Pictures \\) \! -path '*user[45]*' -prune | xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz
더 간단한 버전은 다음과 같습니다.
$ find . \( -type d \
-path */Desktop -o -path */.thunderbird -o -path */Pictures \) \
\! -path '*user[45]*' -prune \
| xargs tar zcvf /opt/rnd/home-$(date +%d%m%y).tar.gz
그러면 이름이 첫 번째 대괄호 블록에 있는 모든 디렉토리를 찾습니다 \( ... \)
. 디렉토리는 다음과 같습니다.
*/Desktop
*/thunderbird
*/Pictures
두 번째 부분은 패턴과 일치하는 모든 경로를 제외합니다 *user[45]*
. 이러한 항목은 목록에서 제거되었습니다. 마지막으로 결과 디렉토리 목록을 tar에 전달합니다.
기타 고려해야 할 사항
위는아니요방탄. 해당 문자열을 포함 user4
하거나 user5
그 안에 포함된 경로는 제외됩니다 . 또한 명령으로 빌드하는 것이 무엇이든 파일 이름의 공백을 처리할 수 있는지 확인하십시오.