SSH(Puttyクライアント)を介して接続するリモートDebianテストサーバーがあります。リモートコンピュータの多くのファイルを別のフォルダに移動したいと思います。
remote: /mnt/a/ -> remote: /mnt/b/c/
RESULT@remote: /mnt/b/c/a/
move(mv)コマンドを使用して、SSHを介してローカルコンピュータからリモートコンピュータに接続します。
mv /mnt/a/ /mnt/b/c/
これを行うには、約700 MBのデータ(約5ファイル)を使用しましたが、ファイルのコピーに時間がかかりました。
mvコマンドはSSHを介して自分のローカルコンピュータにファイルを転送し、サーバーの別のフォルダに戻りますか?それでは、リモートサーバーからファイルをローカルに移動するために使用できる他のコマンドはありますか?
答え1
ソースパスとターゲットパスが同じファイルシステムにある限り、mv
実際に「移動」することはありません。ディレクトリとファイルのメタデータ(inodeとリンク)のみを編集するだけで、データブロック自体は移動しません。たとえば、/home
と が/srv
異なるファイルシステムにあるとすると、次のような結果が表示されます。
$ mv /home/bigfile.txt /home/mydir/ # Instant.
$ mv /home/bigfile.txt /srv # Takes time.
あるファイルシステムから別のファイルシステムにすべてのデータを移動するには、あるディスクセクションから別のディスクセクションに物理的にコピーする必要があります。データブロックを移動するのに時間がかかることがあります(正直なところ、多くのことはできません)。物事の)。
SSHを介してこれを実行しても何も変わりません。 SSHは、Secure Shellの略で、コンピュータをすべてのもののリレーとして使用するのではなく、実際のリモートシェルを使用することを意味します。 SSHを介してリモートシステムから要求されたすべてはリモートで処理されます。
答え2
SSHセッションを介してファイルをより強力に移動するには、screen(またはtmuxなど)を使用することをお勧めします。そうしないと、SSHセッションが中断される可能性があります(ネットワーク障害、ローカルシステムの電源障害、予期しないPuTTYウィンドウを閉じる、Windowsのスタンバイ/休止状態に入るなど)。 SSHセッションが終了すると、移動操作が中断されるか(完了していない - 最良の場合)、データが失われたり破損したりする(最悪の場合)。
私の考えでは、大量のデータを移動するときにrsyncがより良い選択です。まず、進行状況を表示するように簡単に設定できるからです(だから止まらないかなどがわかります)。第二に、中断された場合、すでに正常に実行されたタスクを再実行せずに再起動できるためです。