リモートシステムのディレクトリを使用してtarファイルを作成しました。
tar -czvf
解凍したいローカルコンピュータにscpします。
tar -xzvf
しかし、私は次のようになります。Cannot open: File name too long
私のlubuntu 12.04ローカルマシンには次のものがあります tar (GNU tar) 1.26
。
これでリモートシステムにアクセスできません。必要に応じてバージョンを確認します。
特にリモートシステムがオフラインなので、新しいtarを作成せずに抽出したいと思います。
ちなみに名前が長くても、きちんとしたアーカイブの作り方をご存知でしたら承諾いたします。
ベストアンサー1
tar
ファイル名を256バイト(GNU拡張子を含む)に制限してください。 Linuxファイルシステムは、ファイル名あたり少なくとも256バイトをサポートします。これは、圧縮されたファイルをtar
エラーなしで抽出できることを意味します。だから私は2つの理由があると思います。
タルボールが破損しています。以下で確認してください。
$ tar -tvf tarball.tar
場合によっては、いくつかのエラーが表示されます。
「仮想」ファイルシステムを使用します。ヒューズ圧縮または暗号化されたファイルシステム(オプションのファイル圧縮/暗号化を使用)ファイル名が少し短いか、ファイルシステムの制限と同じです。トリックは、たとえば、ヒューズ圧縮を使用してディレクトリをマウントしてファイル名を作成するときに、
foo.bar
仮想ファイルシステムが名前付きファイルを生成してfoo.bar.gz
透明に圧縮しますが、実際のファイル名は非表示になることです。名前の長さが254バイトのファイルを生成すると、ファイルにサフィックスを追加しようとするため、エラーが発生します。この場合、仮想ファイルシステムの外部からtarballを抽出すると便利です。
$ sudo mkdir /home/${USER}-temp $ sudo chown $USER /home/${USER}-temp $ tar -xvf tarball.tar -C /home/${USER}-temp
とにかく詳細については、追跡してください。
$ strace -o tar-strace.log tar -tf tarball.tar
$ ltrace -o tar-ltrace.log tar -tf tarball.tar