我正在尝试为每日cronjob创建一个bash shell脚本。
该脚本是从文件夹" fromDir"中复制所有带有txt扩展名的文件(包括子目录)。到文件夹" toDir"。
它也将成为" toDir"目录,如果它不存在。
我试图在这里使用tar来压缩文件并在移动后加速解压缩它在传输过程中花费的时间,目标文件夹应该与原始文件夹具有完全相同的结构。
#!/bin/bash -l
fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcvf - -T - |
mkdir -p -m 777 $toDir ;
cd $toDir && tar zxvf -
答案 0 :(得分:1)
第一次看到我的评论,然后如果你tar
不支持-C
参数(更改为dir befor tar),你可以试试这个:
#!/bin/bash
fromDir='c:/fromFolder/' ;
toDir='c:/toFolder/' ;
mkdir -p -m 777 $toDir ;
find $fromDir -maxdepth 3 -name '*.txt' -print |
tar zcf - -T - | (
cd $toDir
tar zxvf -
)
答案 1 :(得分:0)
如果你可以使用rsync,你可以试试这个:
rsync -av --include="*/" --include="*.txt" --exclude="*" ~/from/ ~/to/ --dry-run
这可以解释为包含*.txt
的每个目录并排除其他任何目录(顺序很重要)
选项--dry-run
仅用于打印将要执行的操作,但不会复制任何文件。