scp 远程文件并附加到本地文件

scp 远程文件并附加到本地文件

我有多个文件要从远程服务器中提取。为了进一步处理本地服务器中的文件,我需要将它们合并(连接)为单个文件,但这在远程文件中无法完成。

我不确定scp内部是如何工作的,但为了获得最佳性能,我认为我应该即时合并它们,然后写入单个文件,而不是将这些文件写入本地目录然后合并。您能否告诉我是否scp可以在从远程文件到本地文件的过程中动态合并(附加)文件?

如果没有更好的主意?

答案1

直接使用 SSH 代替 scp 并运行cat。你会在哪里做:

scp remote:{file1,file2...} local-dir

相反,做:

ssh remote cat file1 file2 ... > locale-file

答案2

这很愚蠢,但似乎您实际上可以通过scp将远程文件复制到本地 fifo 并将它们从其中导出来执行此操作:

$ mkfifo p
$ while :; do cat p >> output ; done  &
$ scp somehost:test/\* p
bar       100%    4    10.9KB/s   00:00    
doo       100%    4     8.6KB/s   00:00    
foo       100%    4    13.6KB/s   00:00  
$ kill %1
# output contains the files concatenated

(在 Debian 上使用 OpenSSH 7.4p1-10+deb9u2 进行测试)

答案3

以下步骤仅在本地服务器中执行

我测试了这两个步骤,效果很好

第一步


ssh username@remoteserverip "cat file1 file2 file3 >> /remoteserverpath/Mergedfile"

第二步您正在将合并文件从远程服务器复制到本地服务器您可以通过 rsync 或 scp 来执行此操作


我更喜欢rsync

rsync -avzh username@remoteserverip:/remoteserverpath/Mergedfile localserverpath_where_you_want_to_save

相关内容