Linux Server Deployment & SSH Mastery · レッスン

SCP、SFTP、rsyncによる安全なファイル転送

暗号化されたSSHチャネルを通じてマシン間でファイルを転送します。scp、sftp、rsyncの違いと主要オプションを比較し、単発のコピー、対話的な転送、効率的な同期に適したツールを選べるようにします。

レッスン 4/413 ステップ

「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.gz

rsyncが異なる理由

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. SSHポートフォワーディング(ローカル/リモート)
  2. SSHトンネルとSOCKSプロキシ
  3. SSHエージェントとマルチホップ
  4. SCP、SFTP、rsyncによる安全なファイル転送
← Linux Server Deployment & SSH Masteryに戻る