linux - 在 bash shell 中使用 scp 时出现段错误(核心已转储)

标签 linux bash stack-overflow scp

我有大量 .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

错误实际上是“堆栈溢出”。

这不是开玩笑。 我不是想欺骗任何人。 这是一个严重的问题。 我必须解决这个问题。

那么,我该从这里去哪里呢?

最佳答案

您不应该在MSYSMINGW 系统中对“大量jpeg 文件”进行星号扩展。这可能会导致一些严重的麻烦。

我建议使用 tar 命令或 zip 文件创建文件的 tarball(如果您愿意,但在打包 jpeg 时> 将文件放在一起 另一种压缩方式如 zipgzip 是不必要的,会占用 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 命令中使用 czfxzf

关于linux - 在 bash shell 中使用 scp 时出现段错误(核心已转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50559131/

相关文章:

c++ - 在最佳情况下,QuickSort 算法因堆栈溢出错误而失败 - C++

java.lang.StackOverflowError 在 Weblogic 12c 上运行 JSF 2 示例

linux - 如何解析shell脚本中的以下内容?

bash - 解析变更日志并提取版本的变更

mysql - Bash 脚本循环遍历 MySQL 行并使用curl 和 grep

Bash函数杀死进程

java - 实例化对象时出现 StackOverFlow 错误

c - 如何检查文件是否关闭

linux - 使用 kill -9 杀死线程时发生了什么

linux - docker-入口点.sh : Only exec "$@" not working