首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么rsync软管我的根文件系统时,试图合并在驱动程序中?

为什么rsync软管我的根文件系统时,试图合并在驱动程序中?
EN

Unix & Linux用户
提问于 2022-11-29 01:06:26
回答 1查看 34关注 0票数 0

在一台计算机上,我已经尝试了很长一段时间,但仍然没有完全做到这一点,我根据这里的建议尝试了以下几点:

如何复制-合并两个目录?

作为将驱动程序树合并到Linux系统文件夹的一部分:

代码语言:javascript
复制
rsync -aP ./ /

在当前目录包含一些etcbin等文件夹的情况下,我希望,考虑到这是如何合并目录的,它只会在驱动程序中合并,并将这些驱动程序信任到主系统中,这样我就不必从每个小子目录中痛苦地使用mkdircp。它跑了起来,看上去还不错。然后我像往常一样输入ls来检查效果,并得到了可怕的结果。

代码语言:javascript
复制
sh: ls: not found.

OOPS.

现在这个“系统”,实际上是试图加载并使Ubuntu20.04工作,实际上是通过chroot从同一台机器上安装的安卓主安装的一个临时保姆,我使用内部rsync进行合并--不确定这是不是发生了什么事情的一部分。但奇怪的是,在退出chroot并作为普通子目录在/bin上执行ls (现在运行安卓的ls)之后,ls仍然存在!就像你所期望的那样。但奇怪的是,现在我不能chroot再次进入它,因为chroot失败了

代码语言:javascript
复制
chroot: exec /bin/sh: No such file or directory

即使在chroot之外,我也能清楚地看到/bin/sh坐在那里。但是,更奇怪的是,当我试图在ls之外执行chroot时--注意,这里有一个有问题的rootfs安装在/mnt/hdd0上:

代码语言:javascript
复制
127|rk3588_firefly_itx_3588j:/mnt # hdd0/bin/sh
/system/bin/sh: hdd0/bin/sh: No such file or directory

ls hdd0/bin/sh

代码语言:javascript
复制
rk3588_firefly_itx_3588j:/mnt # ls -l hdd0/bin/sh                              
lrwxrwxrwx 1 root root 4 2022-11-28 09:04 hdd0/bin/sh -> dash

文件系统怎么了?!哦,是的,顺便说一下,是的,dash确实存在:

代码语言:javascript
复制
rk3588_firefly_itx_3588j:/mnt # ls -l hdd0/bin/dash
-rwxr-xr-x 1 root root 137728 2019-07-18 18:15 hdd0/bin/dash

是的,Android是可以的;只是chrooted rootfs (顺便说一下,它实际上在一个附加的SSD上,Android在eMMC上)变坏了。哦,是的,请注意,这个系统,因为它仍然没有道路准备,没有有价值的数据,所以这不是一个很大的损失,但我想看看我是否能够恢复文件系统,而不重新格式化的SSD和重新加载。我做了一个e2fsck -f /dev/block/sda2,得到了一些有趣的结果:

代码语言:javascript
复制
rk3588_firefly_itx_3588j:/mnt # e2fsck -f /dev/block/sda2
e2fsck 1.45.4 (23-Sep-2019)
/dev/block/sda2: recovering journal
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (38957201, counted=38810171).
Fix<y>? y
yes
Free inodes count wrong (9920272, counted=9920042).
Fix<y>? yes

/dev/block/sda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/block/sda2: 16854/9936896 files (0.2% non-contiguous), 922966/39733137 blocks

不确定“自由块计数错误”部分暗示或暗示了什么。但是它并没有治愈病态的文件系统。

EN

回答 1

Unix & Linux用户

发布于 2022-11-29 02:53:23

井,

查看您显示的命令,您要求将所有内容从当前/过去的文件夹复制到文件系统的根目录,递归地以存档模式复制,并使用进度条并将部分传输的文件保存在目标中。如果在您开始的目录下有一个bin目录,那么您将一个bin目录复制到另一个bin目录上.而且,如果原始bin目录中的任何文件与目标中的文件具有相同的名称,则目标中的现存文件将被覆盖。

发出rsync命令时,您所在的目录是哪个?我想知道您是否刚刚将Android文件系统的一部分复制到linux驱动器的根上。请记住,虽然Android使用linux内核,但它与大多数服务器/桌面/膝上型linux系统不兼容。两者之间的体系结构完全不同(例如"x86_64“与"arm64")。一般情况下,你不能从Android中获取模块,将其移动到PC上并期望它正常工作。

从尝试chroot的输出来看,您确实已经损坏了linux系统,但这并不是什么问题。我建议只运行Ubuntu安装脚本,并将其直接指向sda/linux驱动器进行安装。

最后,“自由块计数错误”消息仅仅意味着当e2fsck运行时,它看到一些条目说某些块和inode应该在使用,但是找不到任何使用它们的东西,所以它将它们重新添加到了空闲列表中。

我希望这能帮上忙。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/726648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档