Sftpを使用してファイルを含むディレクトリを転送しようとすると、エラーメッセージが表示されます。
skipping non-regular file directory_name
ディレクトリには、2つのファイルと2つのサブディレクトリが含まれています。
何が悪いのですか?
sftp
は、cp
やscp
と同様に、フォルダー(およびその内容)をコピーするときに、再帰的にフォルダーを転送することを明示的に指示する必要がありますとともに -r
オプション。
したがって、-r
をコマンドに追加します。
提案できるのはrsync
だけです。安全な接続を介してファイルを移動する場合、これは業界標準のようなものです。
rsync -alPvz ./source_dir server.com:destination_dir
それは私が何年も前から使ってきたものです。
(-a
オプションは、ディレクトリの再帰などを処理します)
これは私にとってはうまくいきます:
1)sftp
経由でリモートホストに接続する
2)コピーするリモートディレクトリに移動します。 (例:cd音楽)
3)コピー先のローカルディレクトリに移動します。 (例:lcdデスクトップ)
4)次のコマンドを発行します:get -r *
Use scp
を使用することもできます。一般的なフォーマットは
scp -rp sourceDirName username@server:destDirName
scp
は「安全なコピー」を意味します。フラグは
-r
サブディレクトリに再帰します-p
変更時刻を保持残りの項目は自明だと思います
rsync
がオプションでない場合は、次にlftp
をお勧めします。
lftp sftp://[email protected]/path/path/
次に、mirror
コマンドを使用して、次のように再帰的にアップロードします。
mirror -R
(再帰がデフォルトであることに注意してください。-R
はreverseのためのものです。ミラーコマンドをダウンロードではなくアップロードします。--dry-run
を追加して試してみてください。あなたが期待することをしています。)
または、再帰なしでアップロードするには:
mirror --no-recursion
ミラーリングするディレクトリにcd
する必要があります。よく働く!
可能であれば、 sshfs を使用してください。これは Fuse ファイルシステムであり、ほとんどの最新のuniceで利用可能で、あらゆるSFTPサーバーで動作します。これはリモートファイルシステムです。通常のユーティリティを使用して、リモートファイルを(SFTPプロトコル経由で)操作できます。
mkdir /mount/point
sshfs server.example.com:/remote/path /mount/point
ls /mount/point
cp -Rp /mount/point/somedir /local/location
fusemount -d /mount/point
「sftpを使用してディレクトリを転送する方法」が実際の質問である場合は、
sftp -r user@server
ただし、ディレクトリを転送する場合は、必要に応じて、2つのより良いオプションを提案する場合があります。 sftp
は、sshのようなコマンドプロンプトでリモートサーバーにログインする必要がありますが、必要なのがファイルだけであれば、より簡単で迅速な方法があります。
Scp
1回限りの転送の場合、アップロードするには以下を試してください。
# 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
定期的にディレクトリを同期する予定の場合は、rsyncを使用する方が理にかなっています。 2つのディレクトリ間でデルタを実行し、ネットワーク経由の転送時間とデータを節約します。
rsync -r -a -v -e ssh --delete source_dir user@server:dest
最も一般的なrsyncオプションの一部を以下に示します:( ここから取得 )
お役に立てば幸いです。
あなたはサーバーからローカルパスに行くことができます
scp -rp user@server:directoryname(full path) .
それは少し厄介ですが、私にとってうまくいくのは次のことです:
ssh
を使用してリモートマシンにログインします。sftp
を使用しますget
コマンドと-r
オプションを使用して、ディレクトリとそのすべてのファイルを移動します。