tar --exclude '*/logs'가 작동하지 않습니다.

tar --exclude '*/logs'가 작동하지 않습니다.

tar 프롬프트에서 "logs"라는 폴더를 모두 제외해 보았습니다(모든 로그 파일을 백업할 필요는 없습니다).

단순화된 프롬프트는 다음과 같습니다.

tar -cvpf backup.tar servers --exclude='*/logs'

내 파일 시스템은 다음과 같습니다.

/home/
    backup.sh
    servers/
        server1/
            logs/
                logfile1
                logfile2
        server2/
            logs/
                logfile1
                logfile2
        [server3 ... server100]/

스크립트를 실행하면 로그 폴더가 제외되지 않지만 다음 명령을 실행하면 제외됩니다.

tar -cvpf backup.tar servers --exclude=server1/logs --exclude=server2/logs (and so on for the rest of the servers)

그렇다면 각 서버에 대해 제외 명령을 복사하여 붙여 넣을 필요가 없고 오류가 발생할 가능성이 높도록 명령을 변경하려면 어떻게 해야 합니까?

답변1

GNU tar(v. 1.29)를 사용하면 tar cvf foo.tar --exclude "*/logs" servers.

--exclude이 옵션은 명령줄에서 그 뒤에 나열된 경로에만 적용되는 것으로 나타나므로 다음은 제외되지 않습니다 a/logs.

tar cvf foo.tar servers/a --exclude "*/logs" servers/{b,c}

하지만 매뉴얼 페이지에는 명시적으로 언급된 내용이 없습니다(그러나 개요에는 평소와 같이 파일 앞에 옵션이 나열되어 있습니다).

관련 정보