是否可以在 rsync 命令中提供服务器密码?
rsync -zvr source destination password
我正在使用 rsync 协议在 Django 中开发一个 Web 应用程序。我使用表单从用户那里获取密码输入。我想在 rsync 命令本身中使用这样的密码吗?我该怎么做?我确信有一种方法可以使用标准输入、管道或类似的东西。谢谢
来自man rsync
:
远程守护程序上的某些模块可能需要身份验证。如果是这样,您将在连接时收到密码提示。您可以通过将环境变量设置为
RSYNC_PASSWORD
您要使用的密码或使用--password-file
选项来避免密码提示。这在编写 rsync 脚本时可能很有用。
关于--password-file
:
此选项允许您在文件中提供密码以访问远程 rsync 守护程序。请注意,此选项仅在使用内置传输访问 rsync 守护程序时有用,而不是在使用远程 shell 作为传输时。该文件不能是世界可读的。它应该只包含密码作为单行。
因此,要么RSYNC_PASSWORD
在调用之前设置环境变量rsync
,要么使用临时文件并将其传递给命令;第一个选项可能更容易,使用env
:
env RSYNC_PASSWORD=PASSWORD rsync -zvr source destination
更新:请注意下面的这个小块--password-file
:
请注意,此选项仅在使用内置传输访问 rsync 守护程序时有用,而不是在使用远程 shell 作为传输时。
如果您不使用rsync
内置传输,但可能使用 SSH,则不能使用此方法“自动”进行身份验证。如果您使用 SSH,您应该使用公钥/私钥,或者可能是ASK_SSHPASS
技巧(请参阅this)。