Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 是否存在mv命令的scp变体?_Linux_Scp_Mv - Fatal编程技术网

Linux 是否存在mv命令的scp变体?

Linux 是否存在mv命令的scp变体?,linux,scp,mv,Linux,Scp,Mv,我正在编写一个脚本,将文件从本地系统移动到远程系统。它必须通过像ssh这样的加密通道来实现。最好的方法是什么?我可以通过以下两个步骤执行此操作: scp *.jpg user@ip: rm *.jpg 但是,这不是一个原子过程(就像mv是用于本地文件系统的)。如果复制失败,我将不再拥有本地副本。如何编写脚本以确保仅在复制成功时删除本地文件?您可以将rsync与--删除源文件一起使用: 另一种解决方案,一次性推出 因为与编程无关,所以脱离主题。那么我应该在哪里发布这个问题?也不是bash问题

我正在编写一个脚本,将文件从本地系统移动到远程系统。它必须通过像ssh这样的加密通道来实现。最好的方法是什么?我可以通过以下两个步骤执行此操作:

scp *.jpg user@ip:
rm *.jpg

但是,这不是一个原子过程(就像mv是用于本地文件系统的)。如果复制失败,我将不再拥有本地副本。如何编写脚本以确保仅在复制成功时删除本地文件?

您可以将
rsync
--删除源文件一起使用:


另一种解决方案,一次性推出


因为与编程无关,所以脱离主题。那么我应该在哪里发布这个问题?也不是bash问题。scp和mv都不是bash的一部分;它们与任何其他shell的工作方式完全相同。@ChrisMaes:Superuser.com,最有可能。“就像mv是cp,然后删除源代码一样”,这不太正确。分别而言,它仅适用于不同的文件系统。如果在一个文件系统内移动,文件将保留在原来的位置,只更改名称。执行此操作时请注意,如果在scp copy命令期间在
/path/src/
中创建了新文件,则这些文件将被删除而不会被复制。
rsync -avz --remove-source-files /local/dir/*.jpg user@ip:/remote/dir 
scp /path/src/*.jpg user@host:/path/dst/ && rm /path/src/*.jpg