可以scp复制目录?

现在我只能复制一个单一的tar文件,我怎样才能用scprecursion复制目录?

    是的,使用-r

     scp -rp sourcedirectory user@dest:/path 
    • -r表示recursion
    • -p保留原始文件的修改时间,访问时间和模式。

    注意:这将在/path创buildsourcedirectory因此文件将位于/path/sourcedirectory

    虽然以前的答案在技术上是正确的,但也应该考虑使用rsyncrsync将发送方和接收方的数据与diff机制进行比较,因此不必重新发送先前已发送的数据。

    如果您要多次将某些内容复制到远程计算机,请使用rsync 。 实际上,每次使用rsync都是很好的,因为它拥有更多的控制权限,例如复制文件权限和所有权,排除某些文件或目录。 一般来说:

     $ rsync -av /local/dir/ server:/remote/dir/ 

    将本地目录与远程目录同步。 如果您再次运行它,并且本地目录的内容没有更改,则不会传输任何数据 – 这比运行scp和每次复制所有内容要高效得多。

    另外, rsync允许你很容易地从中断传输中恢复,不像scp

    最后, rsync的现代版本默认运行在ssh上,所以如果scp已经在运行的话, rsync应该是一个简单的替代品。

    这是-r选项的用途。 🙂

    如果需要,请参阅scp手册页获取更多信息。

    recursion复制选项“-r”(小写)

     scp -r 

    我将其与常规的本地recursion复制选项“-R”混淆(大写)

     cp -R 

    在寻找recursion复制标志,并成功地使用它感谢这篇文章,我想张贴只是一个build议。

    如果情况是你正在复制(recursion)一个目录。 也许如果文件被压缩发送,你可以节省时间在传输

    我最后做的是:

     local$ tar -czvf local.tar directory/ local$ scp local.tar user@remote:/directory ssh user@remote remote$ tar -xzvf local.tar 

    希望这可以帮助

    最好的方法是通过SSH使用rsync

     rsync -a -essh /source/ user@dest-server:/dest/ rsync -a -essh user@source-server:/source/ /dest/ 

    我最喜欢的选项是-Pazvessh – 删除:

    • -a:归档模式(包括很多默认的常用选项,包括保留符号链接)
    • -z:压缩
    • -v:详细:显示文件
    • -P:显示progess文件完成/剩余文件
    • -e ssh:在ssh协议中执行rsync
    • – 删除:删除目标中不在源文件中的文件

    您可以使用这个简单的命令recursion地将目录复制到压缩的存档中:

     ssh -p 22 [email protected] 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz 

    例如,要将/var/logdomain.com复制到~/logs.tgz请运行:

     ssh -p 22 [email protected] 'cd /var && tar zcvf - log' > ~/logs.tgz 

    您还可以使用pipe道在目标系统上提取文件。 这个命令会将domain.com/var/log内容复制到你系统上的~/destination/log

     ssh -p 22 [email protected] 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination 

    尽pipe要镜像一个目录,你可能应该使用rsync

    如果您希望将用户密码作为parameter passing,而不是以交互方式input,则可以使用sshpasssudo apt-get install -y sshpass )。

    例:

     sshpass -p 'remote_password' scp -rp /src/folder [email protected]:/dest/folder 

    另一个(可能更好的重复使用)选项是使用NFS – 检查nfs-kernel-server以及如何设置NFS共享。