別のフォルダから特定のフォルダに tar ファイルを作成する方法

別のフォルダから特定のフォルダに tar ファイルを作成する方法

こんにちは、私は Linux 初心者です。

別のディレクトリから tar ファイルを作成し、特定のディレクトリに配置しようとしています。

私はこのコマンドを試しました

tar -cvf dailybackup.tar /root/filesfromlocalmachine/ -C /root/backup/

pf backup という名前のフォルダーがあり、そこに tar を作成したいと考えています。しかし、これを実行するたびに、コマンドを実行しているフォルダーに tar が作成されます。別のフォルダーから tar ファイルを作成する方法はありますか。

答え1

はい、「tar」の前にディレクトリを置いてください。

cd /
tar -cvf /where/to/put/it/dailybackup.tar root/backup/

バックアップされますroot/backup

常に相対パスでバックアップを作成することをお勧めします (回答で使用したように)。そうしないと、別の場所に復元したいときに宛先が上書きされ、バックアップ バージョンと比較される可能性があります。

答え2

tarオプションに遭遇するたびに-C、現在の作業ディレクトリが変更され、後続のすべてのオプションが影響を受けます。これにより、このオプションは順序に依存します。

./a:      ./b:
file001   file002

たとえば、複数の-Cオプションを使用すると、2 番目のオプションは-C最初のオプションに相対的になります。

$ tar -vcf archive.tar.gz -C ./a . -C ../b .  
./  
./file001  
./  
./file002

-C[FILE...]エントリを調整しないので、パス拡張(... グロビング) は機能しません。ただし、グロビングが必要な場合は、--transformを使用できます。

$ tar -cvf archive.tar.gz \
    --show-transformed-names --transform='s:^./.*/::' ./[ab]/file00?
file001
file002

また、'--strip-components=<n>'抽出時に主要なコンポーネントを除去するためにも使用できます。

$ tar -vxf archive.tar.gz \
    --show-transformed-names --strip-components=2  
file001  
file002

関連情報