是否有一种方法可以在另一台服务器上使用shell脚本从一台服务器访问、使用和操作文件>

是否有一种方法可以在另一台服务器上使用shell脚本从一台服务器访问、使用和操作文件>,shell,ssh,Shell,Ssh,我尝试从远程服务器10.101.28.83访问文件,并在运行脚本的主机服务器上操作文件以创建文件夹。但是*是echo$basename$file命令的输出,这意味着不会从远程服务器读取文件 #!/bin/bash #for file in /root/final_migrated_data/*; do for file in root@10.101.28.83:/root/final_migrated_data/* ; do echo "$(basename "$file")" IN="$(ba

我尝试从远程服务器10.101.28.83访问文件,并在运行脚本的主机服务器上操作文件以创建文件夹。但是*是echo$basename$file命令的输出,这意味着不会从远程服务器读取文件

#!/bin/bash
#for file in /root/final_migrated_data/*; do
for file in root@10.101.28.83:/root/final_migrated_data/* ; do
echo "$(basename "$file")"
IN="$(basename "$file")"
IFS='_'
read -a addr <<< "$(basename "$file")"
# addr[0] is case_type, addr[1] is case_no, addr[2] is case_year
dir_path="/newdir1";
backup_date="${addr[0]}_${addr[1]}_${addr[2]}";
backup_dir="${dir_path}/${backup_date}";
mkdir -p "${backup_dir}";
cp /root/final_migrated_data/"${backup_date}"_* "${backup_dir}"

done
我希望echo$basename$file的输出是远程服务器的位置/root/final_migrated_data/上存在的文件列表,但实际输出是*

您可以使用sshfs。顾名思义,sshfs允许本地装载,以便读取和写入您有SSH访问权的远程文件系统。只要您已经了解SSH,它的用法就非常简单:

# mount the distant directory on your local machine:
sshfs user@server.com:/my/directory /local/mountpoint
# manipulate the filesystem just like any other (cd, ls, mv, rm…)
# unmount:
umount /local/mountpoint
如果您需要经常挂载同一个远程文件系统,甚至可以将其添加到/etc/fstab中,请参阅文档了解如何挂载

但是请注意,使用SSH文件系统的速度很慢,因为文件系统上的每个操作都意味着通过网络获取或发送数据,并且sshfs没有特别优化,例如,它不会缓存文件内容,设置起来可能更复杂,但性能更好


自己看看速度是否是个问题。在您的情况下,如果您只是简单地将文件从服务器中的一个位置复制到服务器中的另一个位置,那么让它通过您的家庭计算机传输并再次返回似乎相当荒谬。直接在服务器上运行脚本可能更为有利。

如果要在远程计算机上执行该循环,可能需要使用ssh来执行。root@10.101.28.83“cd/root/final\u迁移的\u数据;对于*l do…中的文件;完成。在此处搜索有关如何设置ssh访问的Q/A。第一次可能会让人困惑和沮丧。看看你所在地区的其他人是否能教你如何做。祝你好运