sftp put:如何防止意外覆盖文件

sftp put:如何防止意外覆盖文件

我是 FileZilla 的长期用户。现在,由于缺乏效率,我正在从 Linux 桌面切换到命令sftp行到 Linux 服务器。

sftp put命令非常适合上传。但是,与 FileZilla 不同的是,覆盖服务器上的现有文件时不会出现确认提示。我当然担心任何意外覆盖。有没有办法sftp在覆盖之前要求确认?

答案1

不,put命令sftp无法向您提供交互式提示以确认覆盖现有文件。它假设您知道自己在做什么。

如果您想确保上传文件时不会覆盖现有文件,请使用该sftp命令mkdir在远程主机上创建一个目录并cd进入该目录,然后再将文件上传到该新的空目录中。

例如,

uploaddir=$( date +upload_%F )  # i.e. something like "upload_2020-05-18"

sftp remote <<END_SFTP
cd some/remote/path
mkdir $uploaddir
cd $uploaddir
put myfile
END_SFTP

mkdir命令将失败如果已经存在一个与您尝试创建的目录同名的目录。当sftp运行非交互式批处理脚本时,如上所述,脚本将在此时终止。

相关内容