CH-J Server ManagerSSH によるサーバー管理
メニュー
すべてのガイドと記事 →

SCPを使わずに2台のLinuxサーバー間でSFTP転送する

手元のコンピューターを経由して2台のリモートサーバー間でファイルをコピーし、競合に対処してSHA-256で結果を検証します。

サーバー間でデータを移す2つの方法

一方のサーバーからもう一方に直接接続する方法と、手元のコンピューターで両者の間のデータを中継する方法があります。直接接続の方が通常は高速ですが、転送元から転送先へのネットワークアクセスと、転送先の認証情報が必要になり、その情報をサーバーに残したくない場合もあります。中継方式では、どちらも必要ありません。認証情報を保持するのは手元のコンピューターだけで、サーバー同士が接続できる必要もありません。その代わり、すべてのデータが手元の接続を通ります。

コマンドラインで中継する

scpの-3オプションは、ローカルコンピューターを経由して2台のリモートホスト間でコピーします。単発のコピーには便利ですが、キューはなく、転送が途切れた場合は自分で再実行する必要があります。

scp -3 admin@source.example:/srv/data/archive.tar.gz admin@target.example:/srv/data/

コピー結果を検証する

転送元のデータを削除する前に、両方のサーバーでチェックサムを比較してください。SHA-256の値が一致すれば、ファイルが破損せずに届いたことを確認できます。ファイルサイズが同じというだけでは、その証明にはなりません。

ssh admin@source.example sha256sum /srv/data/archive.tar.gz
ssh admin@target.example sha256sum /srv/data/archive.tar.gz

競合時の処理を事前に決める

大規模な転送の前に、転送先にファイルがすでに存在する場合の処理を決めます。上書きするか、両方を残すか、スキップするかを選んでください。転送先の空き容量と転送先ディレクトリの権限も確認します。一般ユーザーとしてコピーするとファイルの所有者は保持されないため、アプリケーションの復元後に所有者の修正が必要になる場合があります。

CH-J Server Managerの2つのパネル

Alpha 0.1.1のFile Managerは1~3個のパネルを持ち、それぞれにローカルディスクまたは開いている任意のSSHセッションを表示できます。キーボード、ドラッグ、コンテキストメニューでパネル間のファイルをコピーまたは移動できます。データは手元のコンピューターのディスクに保存されず、そのコンピューターを経由して一方のSFTPセッションからもう一方へストリーミングされます。転送にはキューが使われ、一時停止、再開、キャンセル、競合処理に対応しています。移動時に転送元のファイルが削除されるのは、SHA-256が一致した後で、かつそのファイルが変更されていない場合だけです。

把握しておきたい制限

直接転送ではないため、速度は手元から両方のサーバーへの接続に左右され、コンピューターは接続を維持する必要があります。sudoでしか読み取れないファイルは、この方法でサーバー間コピーできません。Beta 0.1.0には複数パネルのFile Managerは含まれていません。

詳しいドキュメント

OpenSSH: sftp →

OpenSSH: scp (-3) →

生体認証によるロック解除とセキュリティ →