如何从服务器scp父目录下的所有.txt文件和子目录?

时间:2018-03-20 15:07:47

标签: rsync scp subdirectory

我在服务器上有一个目录(我们称之为master)。

在目录master下,有许多.txt个文件;一些.txt文件位于master的子目录下,比如说

    /master/text1.txt
    /master/sub-dir1/text2.txt
    /master/sub-dir2/sub-dir3/text3.txt

master中还有大量其他类型的文件。

我想要做的是scp .txtmaster到我本地的所有 /local-dir/text1.txt /local-dir/sub-dir1/text2.txt /local-dir/sub-dir2/sub-dir3/text3.txt 个文件,并保留子目录结构,即结果如下

db.getCollection('_ad.insight').aggregate([
    {
        $match:{
            date: {
                $lte: ISODate('2018-12-31T00:00:00.000+05:00'),
                $gte: ISODate('2017-01-01T00:00:00.000+05:00')
            }
        }
    },
    {
        $project:{
            _id: 0,
            year: {$year: {date: "$date",timezone: "+0500"}},
            month: {$month: {date: "$date",timezone: "+0500"}},
            day: {$dayOfMonth: {date: "$date",timezone: "+0500"}},
            date: 1,
            clicks: 1,
            reach: 1 
        }
    },
    {
        $group:{
            _id: {
                month: "$month",
                year: "$year"
            },
            clicks: {$sum: "$clicks"},
            reach: {$sum: "$reach"},
            date: {$addToSet: "$date"}
        }
    },
    {
        $project:{
            _id: 0,
            month: "$_id.month",
            year: "$_id.year",
            clicks: 1,
            reach: 1,
            date: 1
        }
    }
]);

我怎样才能完成这项工作?

1 个答案:

答案 0 :(得分:-1)

如果您需要保留文件夹结构,可以尝试使用rsync。以下是您可能想要查看的答案:Using Rsync include and exclude options to include directory and file by pattern

我复制了以下答案供您参考:

  

我认为最接近你想要的是:

     

rsync -nrv --include =“ /” - include =“file_11 .jpg”--exclude =“*”/ Storage / uploads / / website / uploads /

     

(包括所有目录,以及与file_11 * .jpg匹配的所有文件,但没有其他文件),或者可能是这样:

     

rsync -nrv --include =“/ [0-9] [0-9] [0-9] 0000000 /” - include =“file_11 * .jpg”--exclude =“*”/ Storage /上传/ /网站/上传/

     

(相同的概念,但对于它将包含的目录更加挑剔)。

您可以轻松更新命令,使其仅包含.txt个文件。