【问题标题】:Is there a way through which i can access,use and manipulate files from one server using shell scripting on another server >有没有一种方法可以让我在另一台服务器上使用 shell 脚本访问、使用和操作来自一台服务器的文件 >
【发布时间】:2019-08-22 14:12:29
【问题描述】:

我尝试从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/ 的文件列表,但实际输出是 * .

【问题讨论】:

  • 您想在远程机器上执行该循环,您需要使用ssh 来执行此操作。 root@10.101.28.83 'cd /root/final_migrated_data; for file in * l do .... ; done。在此处搜索有关如何设置您的 ssh 访问权限的 Q/A。第一次可能会感到困惑和沮丧。看看您所在地区的其他人是否可以向您展示如何操作。祝你好运。

标签: shell ssh


【解决方案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,设置起来可能更复杂,但性能更好。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2010-12-30
    相关资源
    最近更新 更多