我正在从 MacOS 切换到 Linux。大约 10 天前,我安装了 Ubuntu 24.04 LTS。以下是有关我的系统的一些数据:
OS: Ubuntu 24.04 LTS x86_64
Host: ThinkPad P1 Gen 6
Kernel: 6.8.0-31-generic
Shell: zsh 5.9
Resolution: 2560x1440
DE: GNOME 46.0
Terminal: tmux
CPU: 13th Gen Intel i7-13700H (20) @ 4.800GHz
GPU: Intel Raptor Lake-P [UHD Graphics]
GPU: NVIDIA RTX 2000 Ada Generation Laptop GPU
Memory: 4211MiB / 31753MiB
现在我想将数据从 exFat 格式化的外部硬盘传输到我的机器的硬盘上,方法rsync 3.2.7
如下script.zsh
:
#!/bin/zsh
set -o errexit
set -o nounset
set -o pipefail
VOLUME_NAME="bckp_11"
SUBDIR="subdir"
SOURCEDIR="/media/mycomputer/${VOLUME_NAME}/path/to/Documents/${SUBDIR}"
TARGETDIRCURRENT="/home/mycomputer/Documents/macos_documents/${SUBDIR}"
rsync -vaP $SOURCEDIR $TARGETDIRCURRENT --delete || exit 1
系统地运行脚本(迄今为止尝试了 4 次),并在启动后 1-2 分钟内完全冻结/崩溃计算机,以至于我不得不按下电源按钮硬重启计算机。
有人遇到过这个问题/有解决方案吗?
编辑
根据评论,我删除了 rsync 命令的一些标志,并将带有 rsync 命令的脚本行更改为以下内容:
rsync -vvvvv -a --progress --delete "${SOURCEDIR}" "${TARGETDIRCURRENT}" || exit 1
它崩溃了2次。
tmux 窗格中的输出rsync
如下:
send_files(107999, /path/to/sourcefile.jpg)
count=0 n=0 rem=0
send_files mapped /path/to/sourcefile.jpg of size 2110
calling match_sums /path/to/sourcefile.jpg
/path/to/sourcefile.jpg
与此同时,tmuxtop
窗格中的(相关?)信息如下:
MiB Mem : 31753.9 total, 7666.2 free, 3451.9 used, 21720.0 buff/cache
MiB Swap: 8192.0 total, 8191.7 free, 0.2 used, 28302.0 avail Mem
VIRT RES SHR %CPU %MEM COMMAND
989432 178452 20400 109.3 0.5 tracker-miner-f
2359116 75988 11680 50.2 0.2 DisplayLinkMana
19960 5616 3360 16.3 0.0 tmux: server
981060 98276 52084 10.3 0.3 alacritty
18516 8960 6080 9.3 0.0 rsync
5930600 325752 133912 4.7 1.0 gnome-shell
23108 7116 1280 4.3 0.0 rsync
27.3g 154892 103332 3.7 0.5 Xorg
我对这些数字不是很熟悉,但是 gnome-shell 的(=虚拟内存)消耗最高VIRT
(5930600)或者是 Xorg(27.3g:这是否"g"
意味着 Giga?)。
有2个rsync实例,有问题吗?
需要指出的是,在一次运行该命令时,如果要复制的目录在上一次会话中被部分复制,则不会崩溃。但是,当 rsync 从头传输目录时,它会崩溃。
此外,这是命令的输出free
(但是在稳定情况下而不是崩溃期间)
$ free
total used free shared buff/cache available
Mem: 32515960 4268956 24328520 930904 5315760 28247004
Swap: 8388604 0 8388604
编辑2
我也尝试过(它也在不到一分钟的时间内崩溃了):
rsync -rptgo --progress --delete "${SOURCEDIR}" "${TARGETDIRCURRENT}" || exit 1
我还尝试了以下操作(它也崩溃了):
setopt +o nullglob; for source in "${SOURCEDIR}"/{,.}*; do rsync -a --progress --delete "${source}" "${TARGETDIRCURRENT}"; done