編集:

編集:

マシンAIにはフォルダがあります

/home/a/

マシンBIにはフォルダがあります

/home/b/

/home/a のすべてのファイル、ディレクトリ、サブディレクトリを sftp を使用して /home/b に転送したい。マシン AI で次のコマンドを試しました:

sftp [email protected]
put /home/a/* /home/b/

しかし、動作しません。エラー メッセージが表示されます: 「非通常ファイル /home/a/a1 をスキップしています」... [a1 は a のサブディレクトリです]
put 命令を変更するにはどうすればよいですか?

ありがとう! :)

編集:

scpを使用して解決しました:

scp -r /home/a/ [email protected]:/home/b/

答え1

厳密にはsftpと同じではありませんが、rsyncは、変更されていないファイルはコピーしないため、マシン A からマシン B にコピーを更新するときに特に scp や sftp の非常に強力な代替手段です。また、マシン A から削除されたファイルをマシン B から削除することもできます (もちろん、指示された場合のみ)。

あなたの場合、構文は次のようになります

rsync -zrp /home/a/ [email protected]:/home/b/

この-rオプションは、ファイルを再帰的にコピーするためのもので、-z転送中に圧縮を有効にし、-pコピー時にファイルの権限 (ファイルの作成、編集など) を保持します。これは、私の知る限り、scp では実行されないことです。さらに多くのオプションが可能です。いつものように、manページをお読みください。

答え2

このコマンドは、sftp現在のディレクトリの内容をリモートの現在のディレクトリに再帰的にアップロードします。

 put -r .

見るman sftp

答え3

scp(セキュア コピー) は、セキュア トンネル経由でファイルを転送するための Linux の事実上の標準です。この場合、再帰スイッチを使用する必要があります。例:

scp -r /home/a/ [email protected]:/home/b/

答え4

実際には、 put -r が機能するはずです。ただし、宛先フォルダーがリモート ホスト上に存在している必要があります。

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2

関連情報