sftpを使ってディレクトリを転送しますか?

sftpを使ってディレクトリを転送しますか?

sftpを使用してファイルを含むディレクトリを転送しようとすると、次のエラーメッセージが表示されます。

skipping non-regular file directory_name

このディレクトリには、複数のファイルと2つのサブディレクトリが含まれています。

私は何が間違っていましたか?

答え1

sftp同様に、フォルダ(および明らかにその内容)をコピーするときは、このオプションを使用してフォルダを繰り返し転送することを明示的に知らせる必要がありcpますscp-r

したがって、-rコマンドに追加します。

答え2

rsyncセキュア接続を介してファイルを移動すると、これはやや業界標準に対応します。

rsync -alPvz ./source_dir server.com:destination_dir

これが私が長年使ってきました。

(この-aオプションはディレクトリの再帰などの操作を処理します)

答え3

これは私にとって効果的です。

sftp1) リモートホストに接続して

2)コピーしたいリモートディレクトリに切り替えます。 (例:CD音楽)

3) コンテンツをコピーするローカルディレクトリに変更します。 (例:LCDデスクトップ)

4) 次のコマンドを実行します。get -r *

答え4

あなたの質問が実際に「sftpを使ってディレクトリをどのように転送するのですか?」なら、

 sftp -r user@server

ただし、ディレクトリを移行する場合は、必要に応じて2つのより良いオプションを提案できます。 sftpSSHなどのコマンドプロンプトからリモートサーバーにログインする必要がありますが、必要なものがファイルだけであれば、より簡単で迅速な方法があります。

SCP

ワンタイム転送の場合、アップロードの試みは次のとおりです。

 # upload source directory to remote server
 scp -rp source_dir user@server:dest

 #download directory from remote server:
 scp -rp user@server:source_dir dest

 #specifying ssh key:
 scp -rp -i ~/.ssh/key user@server:source_dir dest

 #remote directory has spaces
 scp -rp -i ~/.ssh/key user@server:"source\\ dir" dest

同期

ディレクトリを定期的に同期したい場合は、rsyncを使用する方が合理的です。 2つのディレクトリ間のデルタ操作を実行して、転送時間とネットワークデータを節約します。

rsync -r -a -v -e ssh --delete source_dir user@server:dest

以下は最も一般的なrsyncオプションのリストです:(ここからインポート)

  • --delete - 送信者(システム)に存在しないファイルを削除します。
  • -v - 詳細情報(-vvはより詳細な情報を提供します)
  • -e "ssh options" - ssh をリモートシェルとして指定します。
  • -a - アーカイブモード - 権限(所有者、グループ)、時間、シンボリックリンク、およびデバイスを保存します。
  • -r - ディレクトリに再帰
  • -z - 転送中のファイルデータ圧縮
  • --exclude 'foldername' – 転送からそのフォルダを除外します。
  • -P – 転送中の進捗状況の表示

役に立ったことを願っています!

関連情報