アカウントを別のサーバーに移動しており、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が指摘したように、tar
whichコマンドを使用して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"