如何使用scp将目录中的所有文件复制到远程目录?

如何使用scp将目录中的所有文件复制到远程目录?

我的目标只是复制全部文件〜/本地目录[电子邮件受保护]/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

以便它模拟操作,您可以检查结果是否是您想要的。

相关内容