sudo 为什么批量解压到半路要密码
========================================
==================================================
==============================================
========================================
下面的命令为:
批量解压指定文件夹里面的所有压缩包
跳过rom1s rom2s rom3s
指定到对应文件夹里面
自动覆盖无需确认
==================================================
10.0KiB 0:00:00 [11.9MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/library.tar ===
10.0KiB 0:00:00 [10.4MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/lost+found.tar ===
10.0KiB 0:00:00 [12.4MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/music.tar ===
10.0KiB 0:00:00 [2.34MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/nsgame.tar ===
10.0KiB 0:00:00 [12.4MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/recordings.tar ===
10.0KiB 0:00:00 [12.1MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/roms.tar ===
2.09GiB 0:10:44 [3.32MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/saves.tar ===
9.29GiB 0:44:25 [3.57MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/screenshots.tar ===
[sudo] ubunto 的密码:
8.62MiB 0:00:00 [11.7MiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/splash.tar ===
10.0KiB 0:00:00 [92.4KiB/s] [================================>] 100%
=== 解压:/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok/system.tar ===
--------------------- ====【SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok";DST="/media/ubunto/SHARE2";sudo mkdir -p "$DST";for t in "$SRC"/*.tar;do echo "=== 解压:$t ===";sudo pv "$t" | sudo tar -xf - -C "$DST" --overwrite;done】======= 为什么解压到半路要密码
我给你一次性讲透、讲准,你这个情况完全正常、不是问题、也不是卡住,放心!
为什么解压到半路突然要输密码?
核心原因只有一句话:sudo 的密码有效期到期了,系统自动让你重新验证一次身份。
详细拆解(超通俗)
- 你最开始运行命令时,输过一次密码
-
Ubuntu 默认规则:
sudo 权限只管 15 分钟(默认)
-
你解压的文件很大(saves.tar 9G,roms.tar 2G)
解压时间超过了 15 分钟
-
到了system.tar时,sudo 过期 → 系统要求重新输密码
就这么简单!
为什么前面几十个文件都不用?
因为前面的文件都很小,15 分钟内解压完了。直到解压大文件花了几十分钟,超时了,才弹密码。
怎么避免中途再要密码?(可选)
如果你不想中途再输密码,我给你一个一劳永逸、安全的版本:
方法:整个命令用一次 sudo 运行
===【sudo bash -c '
SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok";
DST="/media/ubunto/SHARE2";
mkdir -p "$DST";
for t in "$SRC"/*.tar; do
echo "=== 解压:$t ===";
pv "$t" | tar -xf - -C "$DST" --overwrite;
done
' 】============================
sudo bash -c ' SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok"; DST="/media/ubunto/SHARE2"; mkdir -p "$DST"; for t in "$SRC"/*.tar; do echo "=== 解压:$t ==="; pv "$t" | tar -xf - -C "$DST" --overwrite; done '
只需要最开始输一次密码,后面全程不会再弹密码。
最重要的结论
中途要密码 = 完全正常
不是报错
不是卡死
不是权限坏了
不是解压失败
就是 sudo 15 分钟超时 而已!
总结
- sudo 默认 15 分钟有效期
- 解压大文件时间太长 → 超时
- 重新输密码就继续正常解压
- 想用一次密码跑全程 → 用我上面给的sudo bash -c版本
命令总结(超级大白话版)
====【SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok";
DST="/media/ubunto/SHARE2";
sudo mkdir -p "$DST";
for t in "$SRC"/*.tar; do
if [[ "$t" != *rom1s* && "$t" != *rom2s* && "$t" != *rom3s* ]]; then
echo "=== 解压:$t ===";
sudo pv "$t" | sudo tar -xf - -C "$DST" --overwrite;
fi
done 】===================
SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok"; DST="/media/ubunto/SHARE2"; sudo mkdir -p "$DST"; for t in "$SRC"/*.tar; do if [[ "$t" != *rom1s* && "$t" != *rom2s* && "$t" != *rom3s* ]]; then echo "=== 解压:$t ==="; sudo pv "$t" | sudo tar -xf - -C "$DST" --overwrite; fi done
这条命令 能做什么?
1. 批量解压
自动把 源目录里所有 .tar 压缩包 一次性全部解压。
2. 自动跳过 3 个文件
自动不解压 rom1s.tar、rom2s.tar、rom3s.tar你不用手动删,也不用手动排除,命令自己跳过。
3. 自动解压到目标文件夹
所有解压出来的文件,全部统一放到指定的目标文件夹。
4. 自动覆盖,不问你
如果目标文件夹里已经有同名文件直接覆盖,不弹确认、不问你、不中断。
5. 带漂亮进度条
能看到:
- 进度条
- 速度
-
已完成百分比
不会像卡死一样。
6. 自动创建目录
如果目标文件夹不存在,命令自动帮你建文件夹。
SRC 和 DST 是什么?(必须懂)
SRC = 来源目录(Source)
就是 你要从哪里拿压缩包
plaintext
SRC="/media/ubunto/LEROM1S/yuanshuju-btrfs-bakok"
意思:所有.tar 文件都在这个文件夹里,命令从这里读取。
DST = 目标目录(Destination)
就是 你要解压到哪里去
plaintext
DST="/media/ubunto/SHARE2"
意思:所有解压出来的文件,都会放到 SHARE2 这个文件夹里。
最精简总结(你可以直接记这句)
这条命令的功能就是:
从 LEROM1S 里批量解压所有 tar 包,自动跳过 rom1s、rom2s、rom3s,全部解压到 SHARE2,自动覆盖,带进度条,全程不用管。