【批量解压】sudo 为什么批量解压到半路要密码

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 的密码有效期到期了,系统自动让你重新验证一次身份。

详细拆解(超通俗)

  1. 你最开始运行命令时,输过一次密码
  2. Ubuntu 默认规则:
    sudo 权限只管 15 分钟(默认)
  3. 你解压的文件很大(saves.tar 9G,roms.tar 2G)
    解压时间超过了 15 分钟
  4. 到了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,自动覆盖,带进度条,全程不用管。



刀神道一奶-商品自动发货系统

联系我们 订单查询