오늘 나는 모든 파일과 디렉터리를 지정된 디렉터리에 압축하려고 할 때 이 문제에 직면했습니다. 파일이 숨겨져 있으므로 다음을 수행하는 것만으로는 충분하지 않습니다(다음 .
으로 시작하는 파일 제외).
tar -czvf ~/tarfile.tar.gz /path/to/dir/*
그러다가 다음과 같은 생각을 했습니다.
find /path/to/dir/* -execdir /bin/tar -czvf ~/tarfile.tar.gz '{}' +
그러나 이것만으로는 충분하지 않습니다. execdir
명령 선취권 제한에 도달하여 동일한 명령을 다시 실행하고 나머지 파일 세트를 찾아야 하는 경우에는 어떻게 됩니까?
따라서 tar 파일이 존재하지 않는 경우 tar 파일을 생성하는 옵션이나 방법이 필요합니다. 있는 경우 추가합니다. 이 문제에 대한 해결책을 찾으려고 노력했지만 성공하지 못했습니다. 이 옵션을 고려했지만 -r
이미 생성된 tar 파일이 있어야 하므로 성공하지 못했습니다.
이것은 방법이 없으며 이 논리를 달성하기 위해 미니 스크립트를 작성해야 한다는 것을 의미합니까?
답변1
tar czvf ~/tarfile.tar.gz /path/to/dir/
"."로 시작하는 파일을 방지하려면 "*" 없이 파일을 사용하세요 . 포함에서 제외됩니다.
기존 파일을 업데이트하려는 경우 tarfile.tar.gz
(즉, 파일을 더 추가하는 경우) 이를 업데이트하는 데 약간의 요령이 필요합니다. tar는 "gzipped" 파일을 업데이트하는 데 문제가 있기 때문입니다. 이 한 줄의 코드는 파일을 "압축 해제, 업데이트 및 압축"하거나 새 파일을 생성합니다.
[ -f tarfile.tar.gz ] && (gunzip tarfile.tar.gz; tar uf tarfile.tar /path/to/dir/; gzip tarfile.tar) || tar cvfz tarfile.tar.gz /path/to/dir/
가장 간단한 옵션은 tar uf tarfile.tar /path/to/dir/
이를 사용하여 파일을 생성하거나 파일을 업데이트하는 것입니다. 나중에 수동으로 압축해야 합니다(먼저 다른 위치에 복사).