如何仅将所有文件内容打包到平面存档中?

如何仅将所有文件内容打包到平面存档中?

我想将目录中的每个文件(包括子目录中的文件)压缩成一个没有任何子目录的 tar 存档。因此,所有文件都放在一个存档目录中。

答案1

一种解决方案,无需在追加模式下使用 tar 进行复制

find /etc -type f | ( 
   CNT=1 ; 
   TARDST="/tmp/a_flat_archive.tar" 
   while read F ; 
   do 
       D=$(dirname $F) ; 
       SF=$(basename $F) ; 
       if [ $CNT -eq 1 ]; 
       then 
           tar -C "$D" -cf $TARDST  "$SF" ;
       else 
           tar -C "$D" --append -f $TARDST "$SF" ;
       fi ; 
       CNT=$(( $CNT +1 )) ;
   done 
)

相关内容