데모

데모

계정을 다른 서버로 이동하고 있으며 zip -r backup.zip *서버의 홈에서 터미널의 모든 내용을 압축하는 명령을 사용하고 있습니다 /. 아카이브가 생성되고 심볼릭 링크에 도달하면 www이전에 추가한 것과 동일한 폴더를 추가하기 시작하지만 이번에는 www/해당 폴더 앞에 있습니다. 위에서 언급한 두 개의 심볼릭 링크를 제외하도록 위 명령을 어떻게 변경할 수 있습니까?

티아

답변1

(에서) 당신이 찾고 있는 것은 다음과 같습니다 man zip:

   -y
   --symlinks
          For  UNIX and VMS (V8.3 and later), store symbolic links as such
          in the zip archive, instead of compressing and storing the  file
          referred  to  by  the  link.   This can avoid multiple copies of
          files being included in the archive as zip recurses  the  direc‐
          tory trees and accesses files directly and by links.

또는 제외:

zip -r backup.zip * -x "www/*"

데모

다음과 같은 심볼릭 링크/디렉토리가 있다고 가정합니다.

$ ls -ld /*
...
lrwxrwxrwx ... /access-logs -> /var/access-logs
lrwxrwxrwx ... /www -> /var/www
...
$ ls -ld /var/*
...
drwxr-xr-x ... /var/access-logs
drwxr-xr-x ... /var/www
...

/var/access-logs둘 다 포함하고 싶지만 /var/www내용을 반복하고 싶지 않은 경우 추가하는 것으로 --symlinks충분합니다. zip 파일에 심볼릭 링크로 저장됩니다 /access-logs./www

/var/access-logs콘텐츠도 원하지 않는 경우 -x "/var/access-logs/*"zip 명령에 추가하면 제외됩니다.

tar

편집하다:@Bib가 지적했듯이 tarwhich 명령을 사용하여 Linux에서 여러 파일을 보관할 수 있습니다.

tar기본값은 "역참조 없음"( equal의 --symlinks모드 zip)이므로 심볼릭 링크를 심볼릭 링크로만 보관하고 그렇게 따르지는 않습니다 zip.

옵션을 통해 -I아카이브에 대한 압축 프로그램을 선택할 수 있습니다. zstd비율도 좋고 속도도 아주 좋습니다. 그러나 작은 크기 개선에 관심이 있고 훨씬 느린 것을 신경쓰지 않는다면 사용하려는 명령을 설치해야 한다는 점에 유의하세요 zstd.xz

보관 /*제외 /excluded-dir-1및 압축 /excluded-dir-2사용 zstd:

tar cvf backup.tar.zst -I "zstd" --exclude="/excluded-dir-1" --exclude="/excluded-dir-2" /*

아카이브 내용을 다음 위치로 추출합니다 /backup.

tar xvf backup.tar.zst -C "/backup"

관련 정보