如何将所有现有文件从远程sftp服务器传输到本地目录,并创建包含这些文件列表的.txt文件?

时间:2019-10-07 16:11:20

标签: linux bash sftp

我正在尝试从远程sftp服务器复制所有csv文件,并以循环方式将这些文件粘贴到本地服务器。然后,我想将这些文件创建为.txt文件列表,以便处理这些文件。我为此目的尝试了一些现有的解决方案,但是它们都无法正常工作。我是bash脚本的新手。

谢谢。

1 个答案:

答案 0 :(得分:3)

1)您可以创建rsa密钥来链接远程服务器和本地服务器。这样,您无需输入密码:

https://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/

https://help.github.com/en/articles/error-agent-admitted-failure-to-sign

How can I define a bash alias as a sequence of multiple commands?

我使用这三个链接成功设置了rsa密钥。我在实验室的Wiki上创建了一个页面,介绍如何逐步执行此操作,如果您遇到问题,可以将说明上载到github。

2)要进行复制,请尝试以下操作:

scp -r username@remote_server:/path_to_directory_containing_files_you_want/*csv local_path_you_want_to_copy_to

ls > name_of_file.txt

-r表示您要递归复制所有指定的文件,这里所有的都是csv文件。您应该已经具有用户名和远程服务器名称。如果您已经将文件复制到本地目录中,则执行.与放入整个本地路径相同。复制所有文件后执行ls命令,它将创建一个新的txt文件,其中包含该目录中文件的所有名称。假设那里只有新复制的文件,这将是获取复制文件列表的最简单方法。希望这会有所帮助!