每当我尝试 SCP 文件(在 bash 中)时,它们最终都会以看似随机(?)的顺序出现。
我找到了一种简单但不太优雅的方法来保持所需的顺序,如下所述。有聪明的方法吗?
Edit:从这里删除了我早期的解决方案,使用其他建议进行清理、调整,并添加为下面的答案。
要将文件从本地计算机(例如您的笔记本电脑)发送到远程计算机(例如您的计算服务器),您可以使用 Merlin2011 的巧妙解决方案:
- 进入本地计算机中要从中复制文件的文件夹。
- 执行
scp
命令,假设您有远程服务器的访问密钥:
scp -r $(ls -rt) [email protected] /cdn-cgi/l/email-protection:/where/you/want/them/.
Note:如果您没有公共访问密钥,最好使用以下命令执行类似的操作tar
,然后发送 tar 文件,即tar -zcvf files.tar.gz $(ls -rt)
,然后使用单独发送该 tar 文件scp
.
但如果反过来做,你可能无法运行scp
直接从远程服务器发送文件到您的笔记本电脑。相反,您可能需要,比方说bring文件存入您的笔记本电脑。我的暴力解决方案是:
- 在远程服务器中,
cd
进入您要从中复制文件的文件夹。
- 按照您想要的顺序创建文件列表。例如,对于相反的创建顺序(最近复制的最后):
ls -rt > ../filenames.txt
- 现在您需要添加每个文件名的路径。在转到列表所在的目录之前,请使用以下命令打印路径
pwd
。现在往上走:cd ..
- 您现在需要将此路径添加到列表中的每个文件名。有很多方法可以做到这一点,这里是使用 awk 的方法:
cat filenames.txt | awk '{print "path/to/files/" $0}' > delete_me.txt
- 您需要文件名位于同一行,并用空格分隔,因此将换行符更改为空格:
tr '\n' ' ' < delete_me.txt > filenames.txt
- 将 filenames.txt 获取到本地服务器,并将其放入要将文件复制到的文件夹中。
- scp 运行将是:
scp -r [email protected] /cdn-cgi/l/email-protection:"$(cat filenames.txt)" .
同样,这假设您有一个私有访问密钥,否则会更简单tar
遥控器中的文件,然后将其带来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)