2011-08-22 04:12:04 +0000 2011-08-22 04:12:04 +0000
81
81

2台のLinuxコンピュータ間でLAN経由でファイルを転送する最良の方法

私は2台のLinuxコンピュータ間でファイル(音楽フォルダ)を転送したいと思っています。これを行うための最良の方法を検索した後、私はこれを行う方法のlotsがあることを見てきました。私は、この方法が たくさんどこでもいつも聞かれていることを知っています。これに関する主な問題は、Linux初心者のための2011年のこのタスクを行うための1つの最善の方法についての明確な最近のコンセンサスがないということです(いくつかのパラメータに依存している場合でも)。

スタック・エクスチェンジのウェブサイトの精神に則り、これは私の特定の状況に関係するものではなく、ローカルネットワークを介して2台のLinuxコンピュータ間でファイルを転送する方法について、他の人にもガイドしたいと思っています。wikiは多くの人に役立つと思います。

これまでに見つけたものは以下の通りです。

  • ssh
  • sshfs
  • scp
  • sftp
  • nfs
  • samba
  • giver

一番簡単なのは?最も柔軟性がありますか? 最もシンプルですか? 最適なソリューションは? それぞれの長所と短所は?他の(より良い)オプションはありますか?最良の方法を選択する際のパラメータは何ですか(ソリューションはファイル数、ファイルサイズ、簡単さ対柔軟性、…)?

回答 (6)

66
66
66
2011-08-22 04:35:30 +0000

Linux 環境では、セキュリティと使いやすさの両方を考えると、ssh が最適です。SSH, SSHFS, SCP, SFTP はすべて SSH プロトコルの上に構築された異なるサービスです。SCP は非常に使いやすく、CP と同じように動作しますが、パスにユーザ名とマシン名を指定することができます。つまり、cp ~/music/ ~/newmusic/ のような CP を実行するかもしれませんが、ホストという名前のコンピュータに送信するために scp ~/music/ user@host:~/newmusic を実行するのと同じくらい簡単にできます。以上です。証明書やその他の認証を設定していない場合は、相手のマシンでアカウントパスワードの入力を求められます (もちろん scp はこれらの設定を ssh と共有しています)。

SFTP はリモートのファイルシステム上で多くの操作を簡単に行うことができるツールです - これは FTP と同じように動作しますが、SSH を介して動作するので安全で、SSH サーバのみを必要とします。man sftp が使い方のすべてを教えてくれます。SFTP は 2 台のマシン間でフォルダを移動するためだけに使うのではなく、別のコンピュータ上のファイルを並べ替えるなど、多くの操作が必要な場合に便利です。

SSHFS は SFTP をファイルシステムに拡張したものです: ファイルシステムにバーチャルホストをマウントすることができます。SSHFS は半永久的な設定のためのもので、一度だけのファイル転送のためのものではありません。設定にはもう少し努力が必要ですが、これについては プロジェクトのウェブサイト .

OSが混在した環境で作業する必要がある場合、Sambaは次善の策となる。WindowsとOS Xは完全に自動的にSambaをサポートしており、Linuxも同様にSambaをサポートしている。

19
19
19
2011-08-22 06:49:45 +0000

一回だけの移動には scp を使うことをお勧めします。

しかし、このディレクトリが機能していて、他の位置を更新するために何度も移動する必要がある場合は、rsync (sshを使って)を使うことができます。

rsync にはたくさんの引数があるので、私はいつも小さなシェルに入れています。前回実行したときから変更されたものだけを送信するという考えです。

#!/bin/bash

user="nisse"
host="192.168.0.33"

echo "Sync: /home/media/music/"
rsync --archive --delete -v --progress -e "ssh -l $user " /home/media/music/ $host:/home/media/music/

これは"/home/media/music/“というディレクトリをローカルコンピュータから192.168.0.0.33というPCに移動します。そして、ローカルPC上に存在しないものを削除します。

10
10
10
2014-04-27 06:30:49 +0000

自分の LAN 内でファイルを移動するために SSH を使うのではなく、他の方法を試してみることをお勧めします。何らかの理由でこの方法がうまくいかない場合は、Caspar のソリューションを使うことをお勧めします。

$ python3 -m http.server {PICK_YOUR_PORT}

宛先。

$ wget -r {ip / hostname}:{port}/{File / Directory}

これは SSH を使うよりも軽いだけでなく、標準 CAT6 UTP で 45~65MiB の速度ではるかに高速になります。
もし本当に接続を最大限に利用したいのであれば、wgetlftp に置き換えて、pget -n20mirror -r のコマンドを使ってみてください。

8
8
8
2011-08-22 08:57:03 +0000

最も速いのはおそらく netcat (caspar が説明したように) であろう。

tar の組み合わせは、安全でありながらも高速なので好きです。あるいは、両方で ssh を使うこともできます。また、疎なファイルがある場合は、-pも考えられるかもしれません。

tar -cf - . | ( ssh user@target && cd /target/path && tar -xf - )

リモートパスを更新するには-Sが最適です。

5
5
5
2011-08-22 10:00:32 +0000

どうしても LAN 経由で行わなければならない場合、私は rsync を使うことにしています。また、転送されるデータ量を最小限に抑えるための他のトリックもいくつかありますが、音楽ライブラリをバージンの場所にコピーする場合に、それらの多く/すべてが関係するかどうかは疑問です。セキュリティが気になる場合は、最初に RSYNC_RSH=ssh を設定するだけで、データは ssh を介してトンネルされます。

私が実際にやっているとしたら、おそらく LAN は全く使わないでしょうね。ファイルを USB のハードドライブにコピーして、そこから取り出します。私の経験では, これは簡単にLANを介して行くよりも桁違いに速くすることができます, 2回ファイルをコピーすることにもかかわらず, - USB 2.0は480Mbpsのために定格されている, ギガビットイーサネットの短い何かよりも高速である, 加えて、それはLANのパフォーマンスを低下させる条件にあまり敏感です. それはまた、完全にOSに依存しません, あなたがすべての関係者のマシンが扱うことができるファイルシステムを使用することを提供する, - それはかなり普遍的なので、私はVFAT/FAT32をお勧めします。

0
0
0
2016-04-14 20:18:21 +0000

最初にパスワードなしでログインするために ssh のプロセスに従った http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

スクリプトとテキストファイルについては、以下のようにうまく動作します

ローカルホストからリモートホストへデータを転送するには cat localfile | ssh <user>@<ip> "cat > <path>/<remotefile>"

リモートホストからローカルホストへデータを転送するには ssh <user>@<ip> "cat > <path>/<remotefile>" | cat > localfile

これは、ssh クライアントや scp が組み込まれていない組み込みシステム上でファイルを転送するために動作します。

scp がない - ssh のみ。

関連する質問

6
10
5
37
6