デモ

デモ

アカウントを別のサーバーに移動しており、zip -r backup.zip *サーバーのホームから端末のすべての内容を圧縮するコマンドを使用しています/。アーカイブが作成され、シンボリックリンクに到達すると、以前に追加したのとwww同じフォルダの追加が開始されますが、今回はwww/そのフォルダの前にあります。上記の2つのシンボリックリンクを除外するように上記のコマンドをどのように変更できますか?

ティア

答え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比率も良く、スピードもとても良いです。ただし、小さなサイズの改善に興味があり、はるかに遅いことを気にしない場合は、使用したいコマンドをインストールする必要があることに注意してくださいzstdxz

アーカイブの/*除外/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"

関連情報