두 개의 서로 다르지만 유사한 명령인 두 곳에서 실행되는 Python 스크립트가 있습니다.
os.system("tar cf - -C %s . 2>/dev/null 3>/dev/null | 7za a -p%s -si %s 1>/dev/null 2>/dev/null 3>/dev/null" % (cf, self.config.get(jn, "archpass"), filename))
os.system("tar -Jchf - -C %s . 2>/dev/null 3>/dev/null | 7za a -p%s -si %s 1>/dev/null 2>/dev/null 3>/dev/null" % (cf, self.config.get(jn, "archpass"), filename))
이 스크립트는 Ubuntu 서버에서 웹사이트를 백업하는 데 사용됩니다. 따라서 대부분의 파일은 html/php/js/jpg입니다. 개선해야 할 사항이 있는지 확인하려면 이 명령에 대해 더 자세히 알아야 합니다.
질문 1)tar cf
이들그리고 의 차이점은 무엇인가요 tar -Jchf
? 불행히도 tar --help
추가 매개변수를 이해하는 데 도움이 되지 않았습니다 -Jf
.
질문 2)tar도 아카이브됩니까? 모든 것을 에 보내는 목적은 무엇입니까 7za
? 이중 신고?
답변1
명령의 실제 차이점은 Jh
아래에 설명된 대로 스위치입니다( man tar
).
-h, --dereference
Follow symlinks; archive and dump the files they point to.
-J, --xz
Filter the archive through xz(1).
따라서 심볼릭 링크가 아카이브를 압축 xz
하고 아카이브 링크 자체가 아닌 심볼릭 링크를 따르도록 강제합니다.