有没有一种方法可以使我使用另一台服务器上的Shell脚本从一台服务器访问,使用和操作文件,而>

时间:2019-08-22 05:37:11

标签: shell ssh

我尝试从remote server "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/上存在的文件的列表,但实际输出为{ {1}}。

1 个答案:

答案 0 :(得分:1)

您可以使用 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并未针对此进行特别优化(例如,它不缓存文件内容)。 Other solutions exist,设置起来可能比较复杂,但性能更高。

亲自查看速度是否有问题。在您的情况下,如果只是将文件从服务器上的一个位置复制到服务器上的另一个位置,那么使其通过您的家用计算机传输并再次返回就显得很荒谬。直接在服务器上直接运行脚本可能会更有利。