在 bash shell 中使用 scp 时出现分段错误(核心已转储)
Segmentation fault (core dumped) while using scp in bash shell
我有大量 .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/
它returns这个错误信息:
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
错误字面意思是 "Stack Overflow."
这不是开玩笑。
我不是想欺骗任何人。
这是一个严重的问题。
我必须解决这个问题。
那么,我从这里去哪里?
您不应在 MSYS
或 MINGW
系统中的 "large amount of jpeg files" 上进行 star 扩展。这可能会导致一些严重的麻烦。
我建议使用 tar
命令或 zip
文件创建一个 tar 文件球(如果您愿意,但是在打包 jpeg
文件时像 zip
或 gzip
这样的另一个压缩是不必要的,将用完 CPU 并且不会产生更小的文件,因为 jpeg
文件已经被压缩了)。
出于文档目的,我建议您可以在此处阅读 tar
的联机帮助页:https://www.systutorials.com/docs/linux/man/1-tar/
例如,要压缩一个名为 photos
的文件夹,其中包含您的文件,请执行以下操作:
tar -cf photos.tar photos
这将创建文件 photos.tar
。您可以通过 scp
.
传输此文件
在 Linux 和 下工作的东西应该 在 MSYS 上工作,如果你在 bash 工作而不是 cmd 直接写入 stdout
使用 tar,通过 ssh
(而不是 scp
)传输并再次直接在另一端解压缩:
tar -cf - photos/ | ssh youruser@yourserver.com tar -xf - -C ~/
这会将文件解压缩到您的主目录。如果您想添加压缩(在这种情况下我仍然不推荐),您可以在两个 tar 命令中使用 czf
和 xzf
。
我有大量 .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/
它returns这个错误信息:
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
错误字面意思是 "Stack Overflow."
这不是开玩笑。 我不是想欺骗任何人。 这是一个严重的问题。 我必须解决这个问题。
那么,我从这里去哪里?
您不应在 MSYS
或 MINGW
系统中的 "large amount of jpeg files" 上进行 star 扩展。这可能会导致一些严重的麻烦。
我建议使用 tar
命令或 zip
文件创建一个 tar 文件球(如果您愿意,但是在打包 jpeg
文件时像 zip
或 gzip
这样的另一个压缩是不必要的,将用完 CPU 并且不会产生更小的文件,因为 jpeg
文件已经被压缩了)。
出于文档目的,我建议您可以在此处阅读 tar
的联机帮助页:https://www.systutorials.com/docs/linux/man/1-tar/
例如,要压缩一个名为 photos
的文件夹,其中包含您的文件,请执行以下操作:
tar -cf photos.tar photos
这将创建文件 photos.tar
。您可以通过 scp
.
在 Linux 和 下工作的东西应该 在 MSYS 上工作,如果你在 bash 工作而不是 cmd 直接写入 stdout
使用 tar,通过 ssh
(而不是 scp
)传输并再次直接在另一端解压缩:
tar -cf - photos/ | ssh youruser@yourserver.com tar -xf - -C ~/
这会将文件解压缩到您的主目录。如果您想添加压缩(在这种情况下我仍然不推荐),您可以在两个 tar 命令中使用 czf
和 xzf
。