私の目標は、すべてのファイルをコピーすることだけです〜/ local_dir から [email protected] / var / www / html / target_dir scp を使用し、local_dirにlocal_dirカテゴリを作成しないでください。
/var/www/html/target_dir/files..
ただし
/var/www/html/target_dir/local_dir/files..
-rパラメーターを使用する場合
コメント
回答
scp -r引数があります。したがって、次を使用してみてください。
$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir
-r引数は、cpの-r argと同じように機能し、フォルダ全体とすべてのファイルおよびサブディレクトリを転送します。内部。
コメント
- コマンドは/ var / www / html / target_dirに
local_dir
ディレクトリを作成しました私の目標はファイルのみをコピーすることです。 - 申し訳ありませんが、間違っています。次に、コマンドを繰り返しますが、次のようにします。
$ scp -r ~/local_dir [email protected]:/var/www/html/
必要に応じて新しいディレクトリの名前を変更します。 - または
$ scp -r ~/local_dir/* [email protected]:/var/www/html/target_dir
ボートを浮かせます。 - ワイルドカード
*
をドット.
に変更すると、'ディレクトリ自体をコピーせずに、ディレクトリの内容(ドットファイルを含む)をコピーします。scp -pr ~/local_dir/. [email protected]:/path/to/target_dir
- 残念ながら、
.
の使用は、実装が不十分なscp
"バグ修正"(< superuser.com/questions/1403473/scp-error-unexpected-filename/ … )。rsync
が有効な代替手段になります。
回答
If目標は、local_dir
からすべてのファイルを転送することです。*
ワイルドカードでうまくいきます:
$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir
-r
オプションは「再帰的」を意味するため、ディレクトリ全体または複数のディレクトリを転送する場合は、このオプションを記述する必要があります。
man scp
から:
-r Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.
したがって、、最後の例ではファイルのみが転送されますが、-r
オプションを設定すると、ファイルとディレクトリが転送されます。
コメント
- 1+正解を得るには、受け入れられた回答のコメントを読む必要があるためですが、これは直接説明しているだけです。
回答
/.
をに追加ソースディレクトリは、ディレクトリ自体ではなく、その内容を転送します。ワイルドカードソリューションとは対照的に、これには隠しファイルも含まれます。
$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir
このソリューションのクレジットはroaimaに送られますが、次のように投稿する必要があると思いました。コメントだけでなく、実際の回答。
コメント
- 残念ながら、このソリューションは、実装が不十分な "バグ修正"(< superuser.com/questions/1403473/scp-error-unexpected-filename/ … )。
回答
次の手順に従います。
-
ディレクトリをコピーします
local_dir
とそのすべてのサブディレクトリ:scp -r ~/local_dir [email protected] /var/www/html/target_dir
-
local_dir
の内容のみをコピーしますディレクトリlocal_dir
自体ではなくdiv>:scp -r ~/local_dir/* [email protected] /var/www/html/target_dir
-
使用しないでください:
scp -r ~/local_dir/. [email protected] /var/www/html/target_dir
asエラーがスローされます(テストされ、次のエラーが発生しました):scp: error: unexpected filename: .
コメント
- 予期しないファイル名のエラーも表示されます。ただし、ワイルドカードを使用しても機能しません。これは、ワイルドカードが展開されたときに、ディレクトリにコマンドの文字数制限を超えるファイルが多すぎるためです。 macOS
- @RichardKiefer :?のようなワイルドカードを使用できます。 *を指定して検索結果をさらに分離し、scpに渡します。次のリンクを試してください。ワイルドカード
- Syedに感謝しますが、実際にはフォルダ内のすべての要素をターゲットにしたいということでした。 、フィルタリングしません。また、ディレクトリが多すぎると、ワイルドカードが機能しなくなります。
- @RichardKiefer:リチャード、申し訳ありませんが、すべてのファイルをコピーするには、小さなbashスクリプトを使用できます。
ls -l | awk '{print $9}'
を使用して、すべての出力(すべてのファイル名)をtxtファイルにリダイレクトします。 txtファイルを一度に1行ずつ読み取り、その入力をscpで使用して、ファイルをコピーします。input=/home/user/filename.txt while IFS= read -r line
scp * [email protected]:/var/www/html/target_dir
はあなたが望むことをしませんか?その場合は、編集して'しようとしていることの詳細をはこれまでに試しました。