특정 파일 / 폴더를 아카이브에서 제외하는 것을 지원하는 간단한 쉘 명령 / 스크립트가 있습니까?
백업 할 필요가없는 매우 큰 파일이 많은 서브 디렉토리로 아카이브해야하는 디렉토리가 있습니다.
확실한 해결책은 아닙니다.
tar --exclude=PATTERN
명령은 지정된 패턴과 제외 해당 파일을 일치하지만 나는 특정 파일 및 폴더를 무시하는 (전체 파일 경로), 그렇지 않으면 유효한 파일이 제외 될 수 있어야합니다.
find 명령을 사용하여 파일 목록을 작성하고 아카이브하지 않고 목록을 tar에 전달하려는 파일을 제외시킬 수 있지만 소량의 파일에 대해서만 작동합니다. 나는 수만명이 있습니다.
유일한 해결책은 제외 할 파일 / 폴더 목록이있는 파일을 만든 다음 rsync with --exclude-from=file
를 사용 하여 모든 파일을 tmp 디렉토리에 복사 한 다음 tar를 사용하여 해당 디렉토리를 아카이브하는 것입니다.
더 좋고 더 효율적인 솔루션을 생각할 수 있습니까?
편집 : Charles Ma 의 솔루션이 잘 작동합니다. 가장 큰 문제는 tar 명령의 시작 부분에 --exclude='./folder'
있어야 한다는 것 입니다. 전체 명령 (CD 우선, 백업은 해당 디렉토리를 기준으로 함) :
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
--exclude
첫 번째 일 필요는 없지만 소스 디렉토리 앞의 어딘가에 와야합니다 (Cygwin에서 tar 1.29로 테스트).