我知道最近访问的文件会被缓存到 RAM 中,但是是否有用于频繁执行的命令的缓存?
例如,如果我运行cat file.txt
多次,file.txt
则会在第一个命令后缓存。
- 但是如果我运行
ps aux
多次,第一个命令的输出会被缓存在某处吗? - 每个应用程序是否都有自己的常用命令缓存;例如
git log
?
阅读完这个相关问题后,我认为正确的术语是memoization。
我知道最近访问的文件会被缓存到 RAM 中,但是是否有用于频繁执行的命令的缓存?
例如,如果我运行cat file.txt
多次,file.txt
则会在第一个命令后缓存。
ps aux
多次,第一个命令的输出会被缓存在某处吗?git log
?阅读完这个相关问题后,我认为正确的术语是memoization。
在创建安装 USB 磁盘时,我犯了一个小错误,指示了错误的设备,最终覆盖了 230 GB 磁盘的初始几百兆字节。
数据不是特别重要,但我仍然想恢复我能恢复的数据。第一个明显的尝试是,photorec
它确实找到了一些东西。但后来,我希望我可以“修复”文件系统的剩余部分(毕竟,我覆盖了不到 0.5%)。
因此,我尝试使用多种参数组合运行e2fsck
,包括使用备份超级块(类似于相关问题的答案中所建议的方式),最终在“lost+found”中出现了一堆文件夹 - 还算公平。问题是其中一些文件夹仍然会出现错误,例如
ls: cannot access 'lost+found/#26128': Structure needs cleaning
...但如果我现在再次运行e2fsck -f
(如其他答案所建议的那样),我不会发现任何奇怪的事情
e2fsck 1.47.0 (5-Feb-2023)
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
EData: 191504/15269888 files (0.1% non-contiguous), 48227460/61049344 blocks
... 顺便说一句,这只需要几秒钟,所以很明显它实际上并没有检查磁盘的所有内容。我尝试检查其他选项,例如尝试-E discard
,但没有任何变化:检查仍然非常快,但里面的一些文件夹lost+found
仍然出现相同的错误。
我该如何修复那些显示“结构需要清理”的文件夹错误?
请注意,从硬件角度来看,该设备运行完美。
我的磁盘上有这个文件:
$ ls -lh /path/to/some.mkv
-rwxr-xr-x 1 enrico enrico 7.4G Dec 17 18:54 /path/to/some.mkv
所以它小于 8 GB,但是当我尝试将它复制到 30GiB 闪存驱动器上时,出现此错误:
cp: error writing '/path/to/some.mkv': File too large
这是驱动器:
$ sudo fdisk -l | tail -n 16
Disk /dev/sdc: 29.3 GiB, 31457280000 bytes, 61440000 sectors
Disk model: USB DISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6f20736b
Device Boot Start End Sectors Size Id Type
/dev/sdc1 778135908 1919645538 1141509631 544.3G 72 unknown
/dev/sdc2 168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
/dev/sdc3 1869881465 3805909656 1936028192 923.2G 79 unknown
/dev/sdc4 2885681152 2885736650 55499 27.1M d unknown
Partition table entries are not in disk order.
$ sudo mount /dev/sdc /mnt/foo
$ cd /mnt/foo
$ df . -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 30G 16K 30G 1% /mnt/foo
我是 Linux 新手。
正在阅读有关 Linux 文件系统的文章,偶然发现了目录/mnt
和/media
。据我所知,它们都用于挂载,我听说/media
是“新”的,它是所有热插拔设备(例如 USB 棒)的存放位置。所以,我决定尝试一下...
我插入我的 USB 棒然后执行ls /media
,发现 Linux 已经创建了一个以我的用户名命名的目录!真贴心。所以我执行ls /media/foo
(以 foo 为我的用户名)并在那里找到了我的 USB 棒的名称。。'SanDisk 12.8.0 amd64 n'
不知道那是什么意思。
出于好奇,我决定去尝试一下ls /mnt
,但却一无所获!
那么...它/mnt
又有什么用途呢?
因此,我再次在 Linux 中执行了一个看似无辜的操作,但我无法将其恢复到以前的样子。
前几天,我试图在文件系统中查找某些内容。(通常,我使用 Dolphin,但本指南说我可以在 gnome 中的 Nautilus/Files 中更轻松地找到它。)在“文件”应用程序中,我单击了“其他位置”,我的一个硬盘列在那里。单击它后,系统提示我安装该分区。我不想安装它,因为它是启动分区之一,并且已经安装好了。
但现在,每次我重新启动计算机时,登录时都会弹出相同的提示。
我已将其安装并卸载。一切正常,它只是将已经存在的“/boot”分区安装到“/media/$USERNAME”,这很愚蠢且没有必要。
我有:
似乎一切都没有改变,无论好坏。
我如何才能找到这个位置并摆脱每次登录时的提示?
(可移动设备面板很有趣,因为它在“附加设备”下有这个麻烦的分区,但我似乎无法在这里做任何更改,或者将其标记为不自动安装。)
如何解压.bin
包含 DOS/MBR 引导扇区和另一个未检测到的文件系统的文件。我运行binwalk
了它,它向我显示了数据的(估计)位置及其类型。输出为file
:
chromeos_15393.58.0_reven_recovery_stable-channel_mp-v2.bin: DOS/MBR boot sector; partition 1 : ID=0xc, active, start-CHS (0x16,176,27), end-CHS (0x1e,216,58), startsector 364544, 131072 sectors; partition 2 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x0,0,2), startsector 1, 1 sectors
根据这些信息,我知道一开始有一个引导扇区,但是映像中的文件在哪里,我如何获取它们。仅供参考,它是基于 Android 的 ChromeOS(Android 基于 Linux),包含的 ZIP.bin
位于此处。我已将dd
磁盘映像编辑到 USB 并从那里使用它。
我尝试了gdisk
一下,结果如下:
GPT fdisk (gdisk) version 1.0.10
Caution! After loading partitions, the CRC doesn't check out!
Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!
Warning! One or more CRCs don't match. You should repair the disk!
Main header: OK
Backup header: OK
Main partition table: ERROR
Backup partition table: OK
Partition table scan:
MBR: hybrid
BSD: not present
APM: not present
GPT: damaged
Found valid MBR and corrupt GPT. Which do you want to use? (Using the
GPT MAY permit recovery of GPT data.)
1 - MBR
2 - GPT
3 - Create blank GPT
Your answer: 2
Disk /dev/sdb: 61341696 sectors, 29.3 GiB
Model: Cruzer Blade
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 1F1C043E-3E55-B14D-94F1-3962AC2C5E25
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 13815959
Partitions will be aligned on 1-sector boundaries
Total free space is 266217 sectors (130.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 5414912 13815944 4.0 GiB 8300 STATE
2 69 32836 16.0 MiB 7F00 KERN-A
3 499712 5414911 2.3 GiB 7F01 ROOT-A
4 32837 65604 16.0 MiB 7F00 KERN-B
5 495616 499711 2.0 MiB 7F01 ROOT-B
6 65 65 512 bytes 7F00 KERN-C
7 66 66 512 bytes 7F01 ROOT-C
8 331776 364543 16.0 MiB 8300 OEM
9 67 67 512 bytes 7F02 reserved
10 68 68 512 bytes 7F02 reserved
11 64 64 512 bytes 7F03 RWFW
12 364544 495615 64.0 MiB EF00 EFI-SYSTEM
当我看到“损坏的 GPT”时,我感到很困惑。它不可能损坏。说实话,这些区域的名称对于 Linux 安装来说是有意义的(例如 EFI-SYSTEM、KERN-A)。
我有一台嵌入式 Linux 设备(不是 Raspberry Pi),它在 eMMC 驱动器上有两个分区。我使用供应商提供的工具将这两个分区复制到 USB 驱动器上,该驱动器的大小大致等于 eMMC 驱动器的大小。
我接下来要做的是将 USB 驱动器安装到 Linux 计算机上,并使用诸如和e2fsck
之类的工具resize2fs -M
将第二个文件系统的大小调整为最小可行大小,最后用于gdisk
调整分区本身的大小以匹配。
在所有计算中,我都小心确保分区不会小于文件系统,甚至我将分区做得稍微大一些,然后再resize2fs
扩大文件系统以匹配它。
完成这些操作后,我得到了一个 16 GB 的 USB 驱动器,其中包含一个 118 MiB 的启动分区和一个 3.1 GiB 的根文件系统分区。然后我习惯dd
直接从 USB 驱动器读取数据,利用bs=
和count=
参数将读取的数据量限制为仅延伸到第二个分区结束的地方加上一个额外的扇区以容纳“零扇区”。
结果是,我现在有一个图像文件,其中两个分区的大小与它们对应源的大小完全相同,但是当我使用 7-Zip 工具的“文件”->“属性”选项时,它声称“物理大小”(红色圈出)大于这些分区,并且大于我指示dd
从源复制的大小。
这个“物理大小”值从何而来?它是分区表的一部分吗?还是dd
以某种方式从磁盘读取的?
有什么方法可以修改它以摆脱“意外的数据结束”错误?
我创建了一个映射器设备,dmsetup
并使用以下命令创建了一个分区表parted
:
$ fdisk -l /dev/mapper/vdisk
Disk /dev/mapper/vdisk: 511.57 GiB, 549295737344 bytes, 1072843237 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: OMITTED
Device Start End Sectors Size Type
/dev/mapper/vdisk-part1 2048 204799 202752 99M EFI System
/dev/mapper/vdisk-part2 204800 1072841188 1072636389 511.5G Microsoft basic data
现在我该如何操作分区,比如将第一个分区格式化为 FAT?/dev/mapper/vdisk-part1
或者/dev/mapper/vdisk1
似乎不存在。
附言:我确实记得/dev/mapper/vdisk1
在使用创建分区表后出现了或类似的内容parted
,但在重新启动后就消失了。
这是一个microsd ext4 card on a rooted Android
,我想使用
busybox chattr -R +u /mypath
我知道 +u 是什么意思,但有人知道 ext4 的撤销选项是如何实现的吗?具体来说,在我的硬件情况下,撤销能让我恢复到什么程度?如果我使用,extundelete & ext4magic
万一数据被应用程序删除,这些能恢复我的数据吗?
推论:--ext4
是否尊重+u a
和其他扩展属性任何mount
级别的选项,在删除的情况下,将给我一个很好的恢复机会?-- 那么,在 al命令中提到的文件系统+u
到底是什么?chattr
inux / unix
ext_attr 此功能允许使用扩展属性。ext2、ext3 和 ext4 支持此功能。 在这里 我想知道 op mount 是否激活了
+u attribute
我想将大量数据(数百个原始 pcap 文件,每个 1Gb)上传到 AWS。我为此使用了 aws s3 sync。pcap 数据具有高度可压缩性,但我不想在第一步进行压缩,等待压缩,然后再上传。相反,我希望文件在“运行中”进行压缩,就在 aws cli 第一次请求/读取它们时进行压缩。
是否有一些 Linux/posix 文件系统魔法可以实现这样的功能?这种方法似乎很新颖,因为它将压缩文件“隐藏”为普通文件,因此任何可以处理文件的现有工具都可以从中受益。
我查看了 mkfifo,但无法找到合适的解决方案。
原因是什么?我们的目标是实现更高的网络上传带宽,并降低 S3 上的存储成本。