我正在使用scp将内容复制到远程位置。但是有时scp不能按预期工作,我发现有时副本无法正确完成(可能是在将新文件添加到要复制的文件夹中时)。
因此,我想先删除远程文件夹,然后再进行复制以确保完全拥有所需的文件。
还有其他类似scp的命令(例如srm或smv)吗?还是有办法删除远程文件夹和文件?
我正在使用scp将内容复制到远程位置。但是有时scp不能按预期工作,我发现有时副本无法正确完成(可能是在将新文件添加到要复制的文件夹中时)。
因此,我想先删除远程文件夹,然后再进行复制以确保完全拥有所需的文件。
还有其他类似scp的命令(例如srm或smv)吗?还是有办法删除远程文件夹和文件?
Answers:
ssh you@host bash -c "command1;command2;command3; commandN"
。
Rsync将复制整个路径/树,并检查目标位置已存在的文件,如果文件未更改,则不会再进行复制。如果使用--delete选项,它将删除目标位置上不再位于源位置的所有文件。它可以通过ssh工作
rsync -avz -e shh root@location:/path/to/dest /path/from/host
但是输入密码“”后失败sh: rsync: not found
。这是否意味着远程计算机上必须存在rsync?谢谢!
如果您的远程SSH服务器支持SFTP子系统(除非明确禁用,否则大多数情况下都可以),您可以使用sftp
外壳程序(或任何其他SFTP客户端)来操纵远程服务器上的文件和目录。
不幸的是,基本sftp
外壳显然无法处理的一件事是递归目录删除。为了删除目录,您必须首先删除其所有内容。不过,大多数其他客户端(尤其是图形客户端)也确实支持它。
(您没有提到本地操作系统是什么,但是如果是Linux,则可以通过将本地文件管理器指向sftp:// user @ host / path /之类的URL来将其用作GUI SFTP客户端。对于Windows,使用WinSCP是一个不错的客户,FileZilla是一个很好的跨平台解决方案。)
要清空远程(/本地)目录,请使用rsync,如下所示:
rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/
请注意-它将删除指定目的地以下的所有内容!
ssh server rsync --version
或ssh -v server rsync --version
查找原因。
作为一种替代方法,可以将远程目录安装在本地目录中,然后使用远程目录将其删除rm -r /path_to_directory_to_remove
并最终将其卸载。
原始答案在这里:https : //stackoverflow.com/a/24650511/973919