선택적 백업을 수행하는 방법은 무엇입니까?

선택적 백업을 수행하는 방법은 무엇입니까?

domains이라는 이름의 폴더 가 있다고 가정합니다 glassfish. 그것은 domain1, domain2....domainN

domain1디렉토리의 모든 내용을 디렉토리 logs에 저장하고 싶습니다 ./home/user/backup

수동으로 할 수도 있고,

cp -R /home/user/glassfish/domains/domain1 /home/user/backup
rm -rf /home/user/backup/domain1/logs

하지만 어떻게 하면 이 일을 더 쉽게 할 수 있을까요?

답변1

rsync대신 사용할 수 있습니다 cp. 기본적으로 제외 옵션이 있다는 점을 제외하면 로컬 간 복사와 동일합니다.

rsync --archive --exclude /logs /home/user/glassfish/domains/domain1 /home/user/backup

답변2

사용하지 않으려면 이 cp명령을 사용하고 로그가 포함된 폴더를 제외 할 수 있습니다.!(excluded_folder)rsynctar

cp -var /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup

또는

cp -R /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup

더 많은 폴더를 제외하려면 |다음과 같은 것을 사용할 수 있습니다.!(excluded_folder1|excluded_folder2|excluded_folder3)

셸이 확장된 패턴 일치를 지원하는지 확인하세요(예: extglob이 옵션이 활성화된 Bash).

Bash 스크립트에서 사용하려면 다음을 수행하십시오.

#!/bin/bash
shopt -s extglob
cp -var /home/user/glassfish/domains/domain1/!(/home/user/backup/domain1/logs) /home/user/backup

다음과 같은 오류가 발생하는 경우!": event not found"

이 게시물을 확인하세요:

"-bash:!"란 무엇입니까: 이벤트를 찾을 수 없습니다"

답변3

zip다음을 사용하여 tar아카이브 복사본을 만들 수 있습니다.

cd /home/user/glassfish/domains/domain1
tar --exclude="logs" cvf /home/user/backup/domain1.tar .

등. 또는 다음을 사용하여 zip:

cd /home/user/glassfish/domains/domain1
zip /home/user/backup/domain1.zip  -x logs/**\* .

이렇게 하면 날짜를 기준으로 아카이브 이름을 지정하여 기록 기록을 보관할 수 있습니다.

답변4

셸 구문을 사용할 수 없는 경우 다음 패턴을 사용 find하고 전달할 수 있습니다.cpio

find SOURCE \( -depth 1 -name logs -prune \) -o \( -type f -print0 \) |
cpio -p -v -0 -d DESTINATION

다음 cpio옵션이 더 흥미로울 수 있습니다(구현에서 지원하는 경우).

  • -a, --reset-access-time- 파일을 읽은 후 액세스 시간을 재설정합니다.

  • -m, --preserve-modification-time– 생성된 파일의 파일 수정 시간을 소스의 파일 수정 시간과 일치하도록 설정합니다.

  • --no-preserve-owner– 파일 소유권을 복원하려고 시도하지 마십시오. 이는 루트가 아닌 사용자로 실행할 때의 기본 설정입니다.

  • -R [user][:][group], --owner [user][:][group]– 출력에서 ​​파일의 소유자 및/또는 그룹을 설정합니다. [...] 이 옵션은 슈퍼유저만 사용할 수 있습니다.

  • -u, --unconditional– 무조건 기존 파일을 덮어씁니다. 일반적으로 오래된 파일은 디스크의 새 파일을 덮어쓰지 않습니다.

관련 정보