小编Don*_*ear的帖子

如何在使用tar时保持文件所有权

我目前正在为我们的服务器编写一个自动备份脚本.我在脚本中使用UNIX tar命令来存档代码存储库.

在我的PERL脚本中,我使用tar命令,如下所示:

system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath");
Run Code Online (Sandbox Code Playgroud)

我想在提取tar存档时保留文件所有权.我试图列出tar存档内容

tar -jtvf
Run Code Online (Sandbox Code Playgroud)

并且列表包含每个文件的正确文件所有权,但在提取存档时,文件所有权将更改为当前用户.

有没有办法提取tar存档并保留每个文件的原始文件所有权?

unix perl tar

16
推荐指数
2
解决办法
2万
查看次数

如何在unix中排除find命令的搜索路径中给定目录的所有子目录

我需要备份服务器的所有目录层次结构,因此我需要列出服务器中某些目录的所有子目录.

问题是其中一个子目录包含数万个子目录(只有子目录名称的文件可能需要几百兆字节,而相应的find命令需要很长时间).

例如,如果我有一个目录A和一个包含数万个子目录的子目录A/a,我想使用find命令列出A的所有子目录,不包括 A/a的所有子目录但是不排除A/a本身.

我尝试使用这个问题中的答案的-prune的许多变体无济于事.

有没有办法find在UNIX中使用该命令来执行此操作?

更新:

@devnull的答案工作得很好,但现在我有另一个问题,所以我会稍微改进一下我的问题:

我使用以下命令:

 find /var/www -type d \( ! -wholename "/var/www/web-release-data/*"  ! -wholename "/var/www/web-development-data/*" \)
Run Code Online (Sandbox Code Playgroud)

这产生的新的问题是找到某种原因仍是遍历整个目录树"/var/www/web-release-data/""/var/www/web-development-data/",因此它的速度很慢,我担心它可能需要几个小时.

是否有任何方法使find完全排除这些目录而不遍历各自的目录层次结构

unix linux bash

9
推荐指数
1
解决办法
4096
查看次数

如何在visual studio 2012中设置GLM库

我如何在visual studio 2012中设置GLM库

首先,我尝试将glm librar目录解压缩到我的VS 2012项目目录(包含glm库的目录名为glm-0.9.4.4).然后我试着添加glm-0.9.4.4

PROJECT - > properties - > VC++目录 - >包含目录

然后,当我尝试#include <glm/glm.hpp>在我的代码中使用包含时,我收到以下错误:

致命错误C1083:无法打开包含文件:'glm/glm.hpp':没有这样的文件或目录

如何正确设置GLM库以在我的代码中工作?

settings visual-studio glm-math

8
推荐指数
1
解决办法
3万
查看次数

setdiff逐行而不在matlab中使用循环

假设我们有两个矩阵

A = [1,2,3;
     2,4,5;
     8,3,5]
B=  [2,3;
     4,5;
     8,5]
Run Code Online (Sandbox Code Playgroud)

如何sediff在不使用循环或cellfun的情况下分别对A和B中的每一行执行,换句话说,setdiff(A(i,:),B(i,:))对所有人执行i.对于这个例子,我想得到

[1;
 2;
 3]
Run Code Online (Sandbox Code Playgroud)

我正在尝试为我的流体模拟器为两个非常大的矩阵做这个,因此我不能在性能上妥协.

更新:

你可以假设答案的第二个维度(列数)是固定的,例如答案总是一些n乘m矩阵而不是一些不同列大小的参差不齐的数组.

另一个例子:

在我的情况下,A和B分别是m乘3和m乘以2,答案应该是m乘1.对于这种情况的解决方案就足够了,但是对于大小为m的矩阵的一般解由n1,m乘以n2,答案为m by n3将非常有趣.另一个例子是

A = [1,2,3,4,5;
     8,4,7,9,6]
B = [2,3;
     4,9]
Run Code Online (Sandbox Code Playgroud)

答案是

C = [1,4,5;
     8,7,6]
Run Code Online (Sandbox Code Playgroud)

matlab matrix vectorization

4
推荐指数
1
解决办法
717
查看次数

标签 统计

unix ×2

bash ×1

glm-math ×1

linux ×1

matlab ×1

matrix ×1

perl ×1

settings ×1

tar ×1

vectorization ×1

visual-studio ×1