Tar : 특정 크기보다 큰 파일을 보관하지 마십시오


11

크기가 3MB 미만인 파일 (tar 포함)을 보관하고 싶습니다. 그러나 해당 파일이 존재하는 디렉토리를 유지하고 싶습니다. (그래서 find명령을 사용할 수 없습니다 ). 크기가 3MB 이상인 파일은 피하고 싶습니다. 어떻게 할 수 있습니까?


2
find다시 사용할 수 없습니까?
Ignacio Vazquez-Abrams

find 명령으로 디렉토리를 그대로 유지할 수 있습니까?
nixnotwin

답변:


23

생각보다 간단합니다.

$ tar cf small-archive.tar /big/tree --exclude-from <(find /big/tree -size +3M)

3MiB보다 큰 경로에서 파일을 뺀 경로 아래의 모든 파일 (디렉토리 포함) 목록을 가져 오려면 세미 관련 메모 (찾기를 사용할 수없는 설명과 관련)에서 다음을 사용하십시오.

$ find . -size -3M -o -type d

그러면 다음을 수행 할 수 있습니다.

$ tar cf small-archive.tar --no-recursion --files-from <(find /big/tree -size -3M -o -type d)

그러나 나는 더 간단하고 원하는 것을 명확하게 표현하고 덜 놀라게 할 것이므로 첫 번째 것을 선호합니다.


2
+1 무엇! SF에 정중하고 친절한 사람?!?
Jongosi

1
같은 퇴적물 +1 최근 SF에 너무 많은 이기적인 트롤들이 있습니다.
Patoshi パ ト シ

* sentiments : P :)
MikeyB

1

파일 이름에 대괄호가 포함되어 있으면 일부 시스템에서 명시 적으로 제외해야합니다. 예를 들어

$ mkdir test
$ echo "abcde123456" > ./test/a[b].txt
$ echo "1" > ./test/a1.txt
$ ls -la ./test
total 16
drwxrwxr-x 2 user user 4096 Jan 10 16:38 .
drwx------ 4 user user 4096 Jan 10 16:38 ..
-rw-rw-r-- 1 user user    2 Jan 10 16:38 a1.txt
-rw-rw-r-- 1 user user   12 Jan 10 16:38 a[b].txt
$ tar -zcvpf a.tar.gz ./test
./test/
./test/a[b].txt
./test/a1.txt
$ tar -zcvpf a3.tar.gz ./test --exclude-from <(find ./test -type f -size +3c)
./test/
./test/a[b].txt
./test/a1.txt
$ tar -zcvpf ax.tar.gz ./test --exclude-from <(find ./test -type f -size +3c) --exclude '*\[*'
./test/
./test/a1.txt

0

당신은 SSH를 통해 서버에이 작업을 수행하려는 경우, 그것은 때문에 작동하지 않습니다 . 이를 해결하기 위해 파이프와 xargs를 사용할 수 있습니다.

find /path/to/dir -type f -size -3M | xargs tar cf archive.tar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.