我的目标只是复制全部文件从〜/本地目录到[电子邮件受保护]/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参数时
答案1
scp 有 -r 参数。所以,尝试使用:
$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir
-r 参数的作用就像 cp 中的 -r arg 一样,它将传输整个文件夹以及其中的所有文件和子目录。
答案2
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.
因此,如果您内部有子目录local_dir
,则最后一个示例将仅传输文件,但如果您设置该-r
选项,它将传输文件和目录。
答案3
附加/.
到源目录将传输其内容而不是目录本身。与通配符解决方案相反,这也将包括所有隐藏文件。
$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir
该解决方案归功于 roaima,但我认为它应该作为实际答案发布,而不仅仅是评论。
答案4
还
rsync -avP ~/local_dir/ [email protected]:/var/www/html/target_dir/
应该管用。
你可以-n
在最后运行它
rsync -avP ~/local_dir/ [email protected]:/var/www/html/target_dir -n
以便它模拟操作,您可以检查结果是否是您想要的。