使用 SSH 删除文件的脚本

使用 SSH 删除文件的脚本

我有一个脚本,用于scp将我的电脑上的某些文件备份到连接到 LAN 的另一台电脑上,如下所示:

#!/bin/bash
scp some_directories host@ip-address:backupFolder/

我使用公钥,因此无需输入任何密码即可工作,我只需执行它即可。

问题是,如果我从我的电脑备份某个文件,然后将其删除(从我的电脑而不是远程电脑中删除),当我再次执行此脚本时,它会复制新文件并覆盖现有文件,但不会删除我的电脑中不再存在的以前备份的文件。

因此我需要一种方法来通过某个脚本删除远程 PC 中的文件。我知道的唯一方法是使用 登录ssh host@ip,然后使用rm,但显然我无法编写这样的脚本:

#!/bin/bash
ssh host@ip-address
rm -r backupFolder/

因为这样,rm命令会在我的 PC 中而不是在远程 PC 中查找备份文件夹。

答案1

您的描述有点模糊。但我认为您想要存档的是将远程备份文件夹与您的 PC 同步(同步目录)。

在这种情况下,最合适的工具将是rsyncscp。

好消息是,rsync通过 SSH 可以完美运行,您的公钥认证将保持良好的运行。

您可以使用下面的命令使远程服务器上的备份与您的 PC 保持同步

rsync -avz --delete --progress --stats some_directories host@ip-address:backupFolder/

笔记:请小心使用 rsync 的尾部斜杠 => /。阅读手册页。

答案2

只需附加您想要远程运行的命令。

ssh user@ip-address rm -r backupFolder/

这将在远程机器上运行单个命令。SSH 客户端的手册页告诉您以下语法:

SYNOPSIS
     ssh [-1246AaCfgKkMNnqsTtVvXxYy] ...more options... [user@]hostname [command]

正如您在问题中提到的,应该使用公钥身份验证来登录,而无需输入密码。对于其他访问者,请参阅如何设置无密码 SSH 登录?为了那个原因。

答案3

你可以使用以下脚本

ssh host@ip-address << EOF
`rm foo`
exit
EOF

或者,你可以ssh在终端中使用重音符号将命令传递给管道,这样就完全不需要编写脚本了。例如:

ssh host@ip-address:folder `rm foo`

来源:http://www.unix.com/302265172-post2.html

相关内容