我有一个如下所示的文件夹结构:
0/1/2,数字从{0..9}开始
我尝试编写一个 bash shell 脚本,以便可以像这样压缩每个文件夹:
#!/bin/bash
for i in {0..9};
do
cd $i
for j in {0..9};
do
cd $j
for k in {0..9};
do
tar -czvf $i$j$k.tar.gz $k;
done
done
done
它似乎可以为 .tar.gz 文件创建名称,但它不会遍历目录结构来为文件夹内的每个文件夹创建它们。
我不能 100% 确定我在使用该脚本时做错了什么。
我想要它做的是转到 0/0/,然后为文件夹 {0..9} 创建 .tar.gz 文件。
然后转到 0/1/ 并重复此操作。
然后转到 0/2/ 并再次执行,等等。
直到所有文件夹都循环完毕,并创建了.tar.gz 文件。
它似乎只是在 0/0/ 中说并一遍又一遍地压缩相同的文件,并且它不会移动到下一个文件夹。
任何帮助是极大的赞赏。
(免责声明:我既不是程序员也不是开发人员,所以这对我来说是一个新领域。)
(背景:这是为了备份我的 Photoprism 数据存储(因为它有大约 250 万张照片,占用了大约 1.6 TB 的空间)。我尝试将其直接发送到 LTO-8 磁带,我猜是因为有太多小文件,LTFS 遇到了内存不足异常错误,以至于当我弹出磁带并尝试将其重新加载时,它会因为上述内存不足错误而自动将磁带吐出来;但这是另一个问题。所以我想如果我压缩文件,那么 LTFS 处理的文件就会更少,因此;这应该有助于修复 LTFS/LTO-8 磁带驱动器错误。)
谢谢。