小编ate*_*iob的帖子

tar --exclude 不排除。为什么?

我在成功执行的 bash 脚本中有这个非常简单的行(即生成_data.tar文件),除了它排除它通过--exclude选项被告知排除的子目录:

/bin/tar -cf /home/_data.tar  --exclude='/data/sub1/*'  --exclude='/data/sub2/*' --exclude='/data/sub3/*'  --exclude='/data/sub4/*'  --exclude='/data/sub5/*'  /data
Run Code Online (Sandbox Code Playgroud)

相反,它生成一个_data.tar包含 /data 下所有内容的文件,包括我想排除的子目录中的文件。

知道为什么吗?以及如何解决这个问题?

更新我根据下面第一个答案中提供的链接实现了我的观察(首先是顶级目录,最后排除后没有空格):

/bin/tar -cf /home/_data.tar  /data  --exclude='/data/sub1/*'  --exclude='/data/sub2/*'  --exclude='/data/sub3/*'  --exclude='/data/sub4/*'  --exclude='/data/sub5/*'
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。所有“排除的”子目录都存在于结果_data.tar文件中。

这令人费解。无论这是当前 tar(GNU tar 1.23,在 CentOS 6.2,Linux 2.6.32 上)中的错误,还是 tar 对空格和其他容易错过的错别字“极度敏感”,我都认为这是一个错误。目前。

这太可怕了:我尝试了下面建议的见解(没有尾随/*),但它在生产脚本中仍然不起作用:

/bin/tar -cf /home/_data.tar  /data  --exclude='/data/sub1'  --exclude='/data/sub2'  --exclude='/data/sub3'  --exclude='/data/sub4'
Run Code Online (Sandbox Code Playgroud)

除了引号和 2 个空格而不是 1 个空格之外,我看不出我尝试过的和@Richard Perrin 尝试过的有任何区别。我要试试这个(必须等待每晚脚本作为要支持的目录运行) up 是巨大的)并报告。

/bin/tar -cf /home/_data.tar  /data --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4
Run Code Online (Sandbox Code Playgroud)

我开始认为所有这些tar --exclude …

tar

100
推荐指数
6
解决办法
25万
查看次数

如何挽救无法读取的 USB 闪存驱动器

我有一个 16GB 的 USB 闪存驱动器,不知何故损坏到甚至fdisk -l找不到它的地步(我收到一条单行错误消息:“无法打开 /dev/sdc ”)

但是,它正在附加,被分配/dev/sdc为 dmesg 显示:

usb 1-7: new high speed USB device using ehci_hcd and address 69
usb 1-7: New USB device found, idVendor=048d, idProduct=1167
usb 1-7: New USB device strings: Mfr=0, Product=0, SerialNumber=0
usb 1-7: configuration #1 chosen from 1 choice
scsi68 : SCSI emulation for USB Mass Storage devices
usb-storage: device found at 69
usb-storage: waiting for device to settle before scanning
usb-storage: device scan complete
scsi …
Run Code Online (Sandbox Code Playgroud)

partition data-recovery usb-drive flash-memory

20
推荐指数
1
解决办法
7万
查看次数

只有 tar 文件,没有目录

我可能只能编写一个 shell 脚本来查找文件,然后将列表传递给 tar,但我想知道 tar 中是否已经有一个内置功能允许在单个命令行中执行此操作?

例如,我找到了--no-recursion开关,但是当我这样做时:

tar --no-recursion -cvf mydir.tar mydir
Run Code Online (Sandbox Code Playgroud)

它只归档目录中条目的名称(包括子目录!),但不归档任何文件。

我也试过:

 tar --no-recursion -cvf mydir.tar mydir/*
Run Code Online (Sandbox Code Playgroud)

但是,虽然它只存档文件,但它也存档子目录的名称

有没有办法只告诉 tar 文件,没有目录?

tar

16
推荐指数
2
解决办法
5万
查看次数

标签 统计

tar ×2

data-recovery ×1

flash-memory ×1

partition ×1

usb-drive ×1