我在服务器A内部,试图将文件复制到服务器B的特定目录,然后想在复制后更改服务器B内部的文件权限。
我正在Server-A 中运行以下命令
curl --insecure --user user1:psswd1 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/ && chmod 775 ./mappings/D-2022-TEST1.xml
文件被复制,命令成功完成,没有任何错误,但权限部分不起作用。我没有看到目标服务器中文件权限的更改。
输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 425 0 0 100 425 0 1839 --:--:-- --:--:-- --:--:-- 1839
100 425 0 0 100 425 0 1839 --:--:-- --:--:-- --:--:-- 1839
您的命令由两部分组成
curl --insecure --user user1:psswd1 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/
使用curl
和将文件复制到server-B
chmod 775 ./mappings/D-2022-TEST1.xml
它会更改本地文件CCD_ 3(如果存在(的权限。
如果您想在远程server-B
上执行此命令,您可能需要ssh
(可能还有sshpass
,例如
ssh user1@server-B chmod 775 ./mappings/D-2022-TEST1.xml
要避免密码提示,请使用sshpass
。
尝试curl
的选项--create-file-mode <mode>
curl --insecure --user user1:psswd1 --create-file-mode 775 -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/
另一种解决方案是curl
的-Q
或--quote
选项。
-Q,--quote
(FTP SFTP(向远程FTP或SFTP服务器发送任意命令。报价命令在传输发生之前发送(确切地说,是在FTP传输中的初始PWD命令之后(。要使命令在成功传输后发生,请在它们前面加一个破折号"-"。[…]
[…]
chmod模式文件
chmod命令修改指定文件的文件模式位。模式操作数是一个八进制整数模式数。
尝试
curl --insecure --user user1:psswd1 -Q "-chmod 775 /mappings/D-2022-TEST1.xml" -T ./tmp/xml-file/D-2022-TEST1.xml sftp://server-B:/mappings/