SCP、SFTP、rsyncによる安全なファイル転送
暗号化されたSSHチャネルを通じてマシン間でファイルを転送します。scp、sftp、rsyncの違いと主要オプションを比較し、単発のコピー、対話的な転送、効率的な同期に適したツールを選べるようにします。
「SCP、SFTP、rsyncによる安全なファイル転送」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
SSH経由でのファイル転送
これまでに、トンネル、エージェント、マルチホップ接続を習得しました。同じSSHの基盤を使えば、安全なファイル転送も行えます。追加のサービスや開放ポートは必要ありません。
SSHを利用するツールは3つあります。すばやいコピーにはscp、対話的なセッションにはsftp、効率的な同期にはrsyncを使用します。
scp:単純なコピー
scpは、マシン間で実行できる cp のようなものです。リモート側は user@host:path という構文で指定します。
これはローカルファイルをサーバーにアップロードします。
scp report.pdf deploy@server:/home/deploy/docs/scp:ダウンロードとディレクトリ
引数の順序を入れ替えるとダウンロードできます。ディレクトリ全体を再帰的にコピーするには -r を追加します。
scp deploy@server:/var/log/app.log ./
scp -r deploy@server:/etc/myapp ./backup/カスタムポートと鍵を使ったscp
サーバーが標準以外のポートを使用している場合は、scpでは大文字の-Pを使う点に注意してください(sshの小文字の-pとは異なります)。-iで特定の鍵を指定することもできます。
scp -P 2222 -i ~/.ssh/deploy_key file.txt deploy@server:/tmp/sftp:対話的な転送
sftpは、FTPのプロンプトに似た対話型セッションを開始しますが、通信は完全に暗号化されます。使い慣れたコマンドで移動や転送を行えます。
put file— アップロードget file— ダウンロードls、cd、pwd— リモート側の移動lcd、lls— ローカル側の移動
sftp deploy@server
sftp> cd /var/www
sftp> put index.html
sftp> get backup.tar.gzrsyncが異なる理由
rsyncは、ファイルのうち変更された部分だけを転送します。繰り返し実行する場合、scpより大幅に高速になるため、バックアップやデプロイに最適なツールです。
また、同じ暗号化を利用するため、デフォルトでSSH経由で実行されます。
rsyncの基本的な使い方
よく使うフラグの組み合わせは -avz です。
-a— アーカイブモード(権限、時刻、シンボリックリンクを保持)-v— 詳細表示-z— 転送中に圧縮
これにより、ローカルフォルダーの内容をサーバー側にミラーリングできます。
rsync -avz ./site/ deploy@server:/var/www/site/末尾のスラッシュが重要な理由
rsyncでは、コピー元の末尾にスラッシュを付けるかどうかで結果が変わります。
src/— srcの内容をコピー先にコピーしますsrc— srcのディレクトリ自体をコピー先にコピーします
間違えるとフォルダーが入れ子になるため、意図を持って指定しましょう。
rsync -avz src/ dest/ # contents of src into dest
rsync -avz src dest/ # creates dest/src/ミラーリングとファイルの除外
--deleteを使うと、コピー元に存在しないファイルを削除して、コピー先を完全なミラーにできます。パスを除外するには --exclude を使用します。
これらを使う場合は、必ず最初に --dry-run と組み合わせて確認してください。
rsync -avz --delete --exclude '.git' --dry-run ./ deploy@server:/var/www/カスタムSSH設定でのrsync
標準以外のポートや鍵を使用するには、-eで明示的なsshコマンドを渡します。~/.ssh/configで設定した内容もすべて利用できます。
rsync -avz -e 'ssh -p 2222 -i ~/.ssh/deploy_key' ./ deploy@server:/var/www/ベストプラクティス
安全かつ効率的にファイルを転送するためのポイントです。
- 一度限りのすばやいコピーには
scpを使用します - 対話的に参照する必要がある場合は
sftpを使用します - 繰り返しの同期やバックアップには
rsyncを使用します --deleteの前には必ず--dry-runを実行します
理解度チェック
安全な転送についての理解度を確認しましょう。
振り返り
これで、SSH経由で安全にファイルを移動できるようになりました。
- scp — 単純なコピー(
-r、-P、-i) - sftp — 対話的な
put/getセッション - rsync —
-avz、--delete、--excludeによる効率的な差分同期
3つのツールはすべて既存のSSH鍵と設定を再利用でき、高度なSSHツールキットを完成させます。
AI チューターと学ぶ Linux Server Deployment & SSH Mastery — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「SCP、SFTP、rsyncによる安全なファイル転送」レッスンは無料ですか?
はい。「SCP、SFTP、rsyncによる安全なファイル転送」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「SCP、SFTP、rsyncによる安全なファイル転送」で何を学びますか?
暗号化されたSSHチャネルを通じてマシン間でファイルを転送します。scp、sftp、rsyncの違いと主要オプションを比較し、単発のコピー、対話的な転送、効率的な同期に適したツールを選べるようにします。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「SCP、SFTP、rsyncによる安全なファイル転送」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SSHポートフォワーディング(ローカル/リモート)
- SSHトンネルとSOCKSプロキシ
- SSHエージェントとマルチホップ
- SCP、SFTP、rsyncによる安全なファイル転送