我在服务器上有一个目录(我们称之为master
)。
在目录master
下,有许多.txt
个文件;一些.txt
文件位于master
的子目录下,比如说
/master/text1.txt
/master/sub-dir1/text2.txt
/master/sub-dir2/sub-dir3/text3.txt
master
中还有大量其他类型的文件。
我想要做的是scp
.txt
下master
到我本地的所有 /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
}
}
]);
我怎样才能完成这项工作?
答案 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
个文件。