我有大量 .jpeg 文件需要传输到远程服务器。远程服务器是 Digital Ocean Droplet,我在 Windows 10 上。我使用的是 Git bash shell。
当我使用此代码(如下)通过 scp
传输我的文件时(出于隐私考虑更改了用户名和 IP 地址)。
donald@computer MINGW64 ~/Desktop/RETS Media/extra-large-photos
$ scp -r ./*.jpeg upload@192.199.99.100:/root/srep-3.1.1/dist/assets/extra-large-photos/
它返回这个错误信息:
Segmentation fault (core dumped)
它还会创建一个名为 scp.exe.stackdump 的文件。以下是该文件的内容:
Exception: STATUS_STACK_OVERFLOW at rip=001801DC8B6
rax=00000000002FCBF0 rbx=000000018030B570 rcx=00000000FFE03C40
rdx=00000001801FEA40 rsi=000000018030BEC0 rdi=00000000FFFFCDF0
r8 =00000001801FEA42 r9 =0000000000000000 r10=00000001802DFEA0
r11=00000001802E0068 r12=0000000000000000 r13=0000000000000000
r14=0000000000000000 r15=0000000000000000
rbp=00000000FFFFCCC0 rsp=00000000FFFFCC28
program=C:\Program Files\Git\usr\bin\scp.exe, pid 18872, thread unknown (0x18A4)
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
000FFFFCCC0 001801DC8B6 (001800479BE, 00180046A70, 0010040D060, 001801F57E0)
000FFFFCCC0 000004F4BF0 (00180046A70, 0010040D060, 001801F57E0, 00000000000)
000FFFFCCC0 30001000000FF00 (0010040D060, 001801F57E0, 00000000000, 00000000000)
000FFFFCCC0 001800479BE (00000000000, 00000000000, 00000000000, 00000000000)
00000000000 00180045753 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 00180045804 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
错误实际上是“堆栈溢出”。
这不是开玩笑。 我不是想欺骗任何人。 这是一个严重的问题。 我必须解决这个问题。
那么,我该从这里去哪里呢?
最佳答案
您不应该在MSYS
或MINGW
系统中对“大量jpeg 文件”进行星号扩展。这可能会导致一些严重的麻烦。
我建议使用 tar
命令或 zip
文件创建文件的 tarball(如果您愿意,但在打包 jpeg
时> 将文件放在一起 另一种压缩方式如 zip
或 gzip
是不必要的,会占用 CPU 并且不会导致文件变小,因为 jpeg
文件已经被压缩).
出于文档目的,我建议您可以在此处阅读 tar
的联机帮助页:https://www.systutorials.com/docs/linux/man/1-tar/
例如,要压缩一个名为 photos
的文件夹,其中包含您的文件,请执行以下操作:
tar -cf photos.tar photos
这将创建文件 photos.tar
。您可以通过 scp
传输此文件。
如果您使用 bash 而不是 cmd,在 Linux 下工作并且应该在 MSYS 上工作的是直接使用 tar 写入 stdout
,通过 ssh 传输
(不是scp
)直接在另一端再次解压:
tar -cf - photos/ | ssh youruser@yourserver.com tar -xf - -C ~/
这会将文件解压缩到您的主目录。如果您想添加压缩(在这种情况下我仍然不建议这样做),您可以在两个 tar 命令中使用 czf
和 xzf
。
关于linux - 在 bash shell 中使用 scp 时出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50559131/