シンボリックリンクに従わずにユーザーのホームフォルダをリモートサーバーに保存しますか?

シンボリックリンクに従わずにユーザーのホームフォルダをリモートサーバーに保存しますか?

ユーザーが離れると、後で特定のファイルがまだ必要になる可能性があることに気付いた場合に備えて、ユーザーのホームフォルダのワンタイムアーカイブコピーをアーカイブサーバーに作成する必要があります(最終削除待機中)。だから) 去る前に必要なすべてのものを直接バックアップしておきなさい。

私たちはこれを使用してきましたが、scp今では、以前のユーザーがフォルダの1つに珍しいシンボリックリンク構造を作成するいくつかのソフトウェアをインストールするように誤ってだまされてscpを検索し、ブロックされる前にコピーを試みているようです。 、意外にも。

残念ながら、scpは常にシンボリックリンクに従うことがわかり、これを防ぐためのオプションはないようです。

この問題を回避するために、ユーザーフォルダをバックアップする別の方法を探しています(理想的には、必ずしも必要なものよりも複雑ではありません)。

tar可能であるかもしれませんが、アーカイブサーバーにコピーする前にローカルでタールボールを作成すると、多くのストレージスペースが利用可能になり、将来ファイルサーバーがいっぱいになると少し問題が発生する可能性があることが少し心配です。

もう1つの可能性はrsyncを使用することですが、1回限りのrsyncファイル転送には過剰である可能性があり、以前の経験でrsync独自のオプションを調整することは時々それ自体で退屈する可能性があることを知っています。

これに安定したシンプルなscpの代替案を提案できる人はいますか?

答え1

一時ファイルが気に入らない場合はtar簡単です。一時ファイルを使用しないでください。パイプを使用してください。

cd /home ; tar cf - user | gzip | ssh archivehost -l archiveuser 'cat > user.archived.tar.gz'

代替xzまたはあなたが好きなものgzip。または、マスターサーバーのCPUサイクルを保存することが、ネットワーク帯域幅(したがってアーカイブサーバーのCPU)を節約するよりも重要な場合は、接続の反対側に移動します。

cd /home ; tar cf - user | ssh archivehost -l archiveuser 'gzip > user.archived.tar.gz'

gpgそこに投稿することもできます。保存するときは公開鍵暗号化を使用し、何かを復元する必要がある場合は秘密鍵を使用してこれらのアーカイブ専用鍵のペアを取得します。

リクエストに応じて詳細を確認できます。

私はuserあなたが保管しているホームディレクトリのユーザーになります/home/userarchivehostアーカイブを保存するサーバーとarchiveuserアーカイブサーバーでアーカイブを所有しているアカウント。

tar cf - user「tarアーカイブを作成してuser標準出力に書き込む」という意味です。 「作成-c」、-f -「stdin/stdoutをファイルとして使用」です。これは基本的な操作であるため機能しますが、最初は基本操作がtar c userテープ装置を読み書きすることです。明示的な表現を使用することは、私の年齢が聞こえたという信号であるかもしれません。-f -tar-f -

tarzフラグがあると思いますが、それを.tarファイルの反対側に移動する方法を示すことはできませんssh。 (また、明示的なパイプを接続しgziptar使用することは、「老人」の仕事の1つです。tarこれに対するオプションが常にあるわけではありません。)また、そのオプションを覚えなくても、、、bzip2または他lzopxz -3vコンプレッサーを交換することができますtar

私は--checkpoint以前聞いたことがないので、直接テストに頼る必要があります。

答え2

Rsyncは合理的な選択です。ワンタイム転送にrsyncを使用することには問題はありません。

Tarも合理的な選択です。アーカイブをローカルに保存する必要はありません。SSHによる直接パイプ

もう1つの可能性は、サーバーディレクトリを次の場所にマウントすることです。SSHFS。ただし、SSHFSはすべてのメタデータ(権限など)を保存していないことに注意してください。 (Tarとrsyncはすべてのメタデータを保存することはできませんが、より良いパフォーマンスを発揮することができます。GNU --acls --xattrstarに渡して--acls --xattrsrsyncに渡します。)

関連情報