除了删除文件和文件夹,还有其他类似scp的命令吗?


14

我正在使用scp将内容复制到远程位置。但是有时scp不能按预期工作,我发现有时副本无法正确完成(可能是在将新文​​件添加到要复制的文件夹中时)。

因此,我想先删除远程文件夹,然后再进行复制以确保完全拥有所需的文件。

还有其他类似scp的命令(例如srm或smv)吗?还是有办法删除远程文件夹和文件?

Answers:


19

ssh命令将允许您在远程主机上执行几乎所有命令,例如,

ssh yourlogin@remotehost rmdir somedir

在此示例somedir中,相对于yourlogin的主目录。


感谢那。该方法的唯一问题是,每次调用它时,您都必须再次“登录” :(。由于目标是嵌入式的,因此我无法使用ssh键,因为所有键都被覆盖了,所以我尝试在一个命令中执行此操作rsync看起来很有希望,但是+1,因为它确实回答了问题:))
code_fodder 2013年

5
@code_fodder,您还必须使用rsync登录。实际上,您将必须使用所有方法再次登录。实际上,使用ssh至少可以一次执行多个命令:ssh you@host bash -c "command1;command2;command3; commandN"
2013年

@terdon这是一个很好的观点,非常感谢nicley :)
code_fodder

4

Rsync将复制整个路径/树,并检查目标位置已存在的文件,如果文件未更改,则不会再进行复制。如果使用--delete选项,它将删除目标位置上不再位于源位置的所有文件。它可以通过ssh工作


我在弄乱rsync,就像有人在我的另一篇有关scp的文章中提到的那样。我在本地PC上安装了rsync,但没有在远程PC(嵌入式单元)上安装rsync。我使用的是命令,rsync -avz -e shh root@location:/path/to/dest /path/from/host但是输入密码“”后失败sh: rsync: not found。这是否意味着远程计算机上必须存在rsync?谢谢!
code_fodder 2013年

1
@code_fodder是的,它需要一个在远程系统上运行的程序来告诉它该怎么做。这不是直接复制程序
加拿大卢克

@CanadianLuke ...该死:(
code_fodder

@code_fodder只需安装!有用而不是有用
加拿大卢克

取决于嵌入式解决方案,rsync可能会或可能不会很容易实现……尽管正如我所说,这是非常普遍的,取决于嵌入式解决方案。注意:Rsync不必一直都在运行,但是它需要存在才能按需运行。
13年

3

如果您的远程SSH服务器支持SFTP子系统(除非明确禁用,否则大多数情况下都可以),您可以使用sftp外壳程序(或任何其他SFTP客户端)来操纵远程服务器上的文件和目录。

不幸的是,基本sftp外壳显然无法处理的一件事是递归目录删除。为了删除目录,您必须首先删除其所有内容。不过,大多数其他客户端(尤其是图形客户端)也确实支持它。

(您没有提到本地操作系统是什么,但是如果是Linux,则可以通过将本地文件管理器指向sftp:// user @ host / path /之类的URL来将其用作GUI SFTP客户端。对于Windows,使用WinSCP是一个不错的客户,FileZilla是一个很好的跨平台解决方案。)


1

要清空远程(/本地)目录,请使用rsync,如下所示:

rsync -r --delete-excluded --exclude=* / server:/tmp/empty_this_dir/

请注意-它将删除指定目的地以下的所有内容


我已经尝试过了,但是它返回一个错误并且没有删除远程目录。exec请求在通道0上失败rsync:连接意外关闭(到目前为止已接收0个字节)[sender] rsync错误:io.c(235)出现无法解释的错误(代码255)[sender = 3.1.2]
xarlymg89,2005年

似乎在远程端启动rsync甚至通过ssh连接都存在问题。您可以尝试ssh server rsync --versionssh -v server rsync --version查找原因。
兄弟

感谢您的回答,但是我找到了一种解决问题的方法,它虽然不那么优雅,但效果相似。因为我相信我将不得不再次面对它,所以会再试一次。
xarlymg89

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.