我必须在远程机器上运行shell脚本(windows/Linux).
我在机器A和B上配置了SSH.我的脚本在机器A上,它将在远程机器上运行我的一些代码,机器B.
本地和远程计算机可以是基于Windows或Unix的系统.
有没有办法使用plink/ssh运行?
将文件复制cp到可能存在或不存在cp的文件夹时,如何在必要时创建文件夹?这是我尝试过的:
[root@file nutch-0.9]# cp -f urls-resume /nosuchdirectory/hi.txt
cp: cannot create regular file `/nosuchdirectory/hi.txt': No such file or directory
Run Code Online (Sandbox Code Playgroud) 我正在做一个bash shell脚本,我想更改创建新文件的默认组.我知道你umask用来改变权限.这群人有什么东西吗?
我正在寻找一个rsync类似程序,它将在远程端创建任何缺少的父目录.
例如,如果我/top/a/b/c/d在一台服务器上并且只/top/a存在于远程服务器上,我想复制d到远程服务器并创建b和c目录.
命令:
rsync /top/a/b/c/d remote:/top/a/b/c
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为/tmp/a/b远程服务器上不存在.如果确实存在,那么文件d将被复制到路径中/top/a/b/c.
这可能与rsync使用--include和--exclude切换有关,但它非常复杂,例如:
rsync -v -r a dest:dir \
--include 'a/b' \
--include 'a/b/c' \
--include 'a/b/c/d' \
--include 'a/b/c/d/e' \
--exclude 'a/*' \
--exclude 'a/b/*' \
--exclude 'a/b/c/*' \
--exclude 'a/b/c/d/*'
Run Code Online (Sandbox Code Playgroud)
即使中间目录有文件,也只会复制a/b/c/d/e到dest:dir/a/b/c/d/e.(注意 - 包含必须在排除之前.)
还有其他选择吗?
例:
rsync /tmp/fol1/fol2/fol3/foln user@addr:/tmp/fol1/fol2/fol3/foln
Run Code Online (Sandbox Code Playgroud)
我的主要问题是远程机器上不存在文件夹/ tmp/fol1.
我可以使用哪些参数强制rsync创建此树?
假设我想将foo.txt本地计算机上的文件rsync 到/home/me/somedirectory/bar.txt远程计算机上的文件,但该文件somedirectory/尚不存在。我该怎么做呢?
我尝试过rsync -e ssh -z foo.txt remotemachine:/home/me/somedirectory/bar.txt,但出现rsync: push_dir#3 "/home/me/somedirectory" failed: No such file or directory (2)错误。
(尽管复制文件而不重命名是可行的。也就是说,它运行良好:rsync -e ssh -z foo.txt remotemachine:/ home / me / somedirectory /`)