在工作中,我们每晚都会转储我们的 mysql 数据库。每天,我都会猜测接近 90-95% 的数据是重复的,并且随着时间的推移而增加。(哎呀,在这一点上,有些可能是 99%)
这些转储是一行是单个 mysql INSERT 语句的地方,因此唯一的区别是整行以及它们在文件中的顺序。如果我对它们进行排序,文件与文件之间的实际差异将非常小。
我一直在寻找,但我还没有找到任何方法来对转储输出进行排序。不过,我可以通过sort命令进行管道传输。然后会有很长很长的相同行块。
所以我试图找到一种只存储差异的方法。我可以从一个主转储开始,然后每天晚上进行比较。但是每晚差异都会更大。或者,我可以制作滚动差异,单个差异非常小,但如果我必须每晚将整个系列的主要差异放在一起,计算时间似乎会越来越长。
这可行吗?用什么工具?
编辑我不是问如何做 mysql 备份。暂时忘记mysql。这是一条红鲱鱼。我想知道的是如何从一系列文件中制作一系列滚动差异。每天晚上我们都会得到一个文件(恰好是一个 mysqldump 文件),它与之前的文件有 99% 的相似度。是的,我们对它们全部进行 gzip。但是首先拥有所有这些冗余是多余的。我真正需要的是与前一天晚上的差异……与前一天晚上的差异仅 1%……等等。所以我所追求的是如何制作一系列差异,所以我每晚只需要存储那 1%。
我正在使用 ack 来搜索字符串。当我在没有文件参数的情况下运行它时,我得到行号:
$> ack function
themes/README.txt
7:Drupal's sub-theme functionality to ensure easy maintenance and upgrades.
sites/default/default.services.yml
48: # - The dump() function can be used in Twig templates to output information
...
Run Code Online (Sandbox Code Playgroud)
但是当我尝试指定一个文件时,我没有得到行号。
$> ack function themes/README.txt
Drupal's sub-theme functionality to ensure easy maintenance and upgrades.
Run Code Online (Sandbox Code Playgroud)
我在谷歌上搜索了一些开关,但没有找到结果。如何获得确认以显示单个文件结果的行号?
我想为一个颠覆项目做一个无密码的 ssh 连接。现在我正在使用 ssh+svn,这有点烦人,因为我每次想与服务器进行交易时都必须输入密码。
我在网上找到了几个关于如何为无密码 ssh 生成密钥的教程,但它们似乎都假设我在远程系统上使用与我的家庭系统相同的用户名。但是,我用于 ssh+svn 的用户名与我正在运行的系统上的用户帐户名不同。我该如何正确设置?我只是更改密钥文件中的名称并不走运。
我正在处理网站转换。从 Web 服务器链接和提供的文件不区分大小写。但是,我已经在我的 linux 系统上制作了该站点的转储,并且我正在编写脚本来迁移数据。问题是我在页面中的链接字符串和文件系统上的实际单词大小写之间遇到了区分大小写的问题。
例如,一个页面可能有一个链接,<a href='/subfolder/PageName.asp'>而实际文件是/subfolder/pagename.asp. 同样的图像 -<img src='spacer_sm.gif'>可能是Spacer_Sm.gif.
所以我的想法是将所有目录和文件名更改为站点下载的小写等效项。我该怎么做(可能有更好的方法吗?)
即使有不区分大小写开关的 unix 命令,我使用的是 php,所以并不是所有的文件系统命令都有区分大小写的选项。
我正在对迁移到 unix 系统的某些文件的权限进行大规模递归更改。我把它们改成了ug+rw,但是后来发现不能遍历子目录。我查看了手册页chmod并没有看到任何排除目录的解释,所以我搜索了一下,发现人们过去常常find递归地将目录的权限更改为用户和组的“执行”。我这样做了,然后我可以调查他们。
但在我看来,我应该能够执行此查找chmod- 以递归方式将文件更改为读/写,但不会使目录无法遍历。我是否以“正确”的方式完成了此操作,还是有更简单的方法来做到这一点?
我有一个文件,其中包含我想要 grep 的术语,每个术语都是文件中的一行。我在想我可以用 xargs 做到这一点。我可以从这样的手册页中的示例中收集到什么
find ./work -print0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)
是 xargs 将预管道命令的输出附加到其参数的末尾。因此,如果 find 返回report.doc,则 xargs 将构造rm report.doc. 这种理解是否正确?
因此,由于我希望文件中的值位于 grep 命令的中间,因此我需要指定一个占位符。在玩的过程中,我尝试过{},但没有奏效:
$> cat strings.txt | xargs grep {} subdirectory/*
grep: string1: No such file or directory
grep: string2: No such file or directory
Run Code Online (Sandbox Code Playgroud)
xargs 是正确的工具吗?如果是这样,语法是什么?
我想查看单个目录的长列表。当我输入时ls -lha,我看到:
drwxrwxr-x 4 username groupname 4.0K 2010-08-05 09:55 files
drwxrwxr-x 7 username groupname 4.0K 2010-08-05 14:25 trunk
drwxrwxr-x 8 username groupname 4.0K 2010-08-05 16:02 phpincludes
drwxrwxr-x 11 username groupname 4.0K 2010-07-26 12:31 phpMyAdmin-3.3.5-english
Run Code Online (Sandbox Code Playgroud)
但是,当我键入 时ls -lha phpMyAdmin-3.3.5,我会得到目录内容的列表。如何键入命令以便我只能看到
drwxrwxr-x 11 username groupname 4.0K 2010-07-26 12:31 phpMyAdmin-3.3.5-english
Run Code Online (Sandbox Code Playgroud)
? 我想用符号链接的目录来做这个,所以我可以看到它们链接到哪里,而不是它们的内容。
我正在寻找比较 Drupal 主题的目录。drupal 主题是一个由多个文件组成的目录,我试图找出哪些是必不可少的。例如,他们可能都有一个名为template.phpor的文件page.tpl.php。
如何找到多个目录的所有公共文件集?就我而言,所有“相同”文件(同名文件)都将位于同一级别目录中。
我在带有 git 1.7.1 的 cygwin 上使用 bash 版本 4.1.2(1)-release (x86_64-redhat-linux-gnu)。我想为需要使用输入参数两次的命令创建别名。按照这些说明,我写了
[alias]
branch-excise = !sh -c 'git branch -D $1; git push origin --delete $1' --
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
$> git branch-excise my-branch
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)
我最后尝试了 a-和 a --,但我得到了同样的错误。我怎样才能解决这个问题?
我正在运行一个脚本来修复 rsync 后的文件所有权和权限。的最佳方式做我的任务预留的问题,我想知道,有没有一种方式来运行chmod,并chown在同一时间?
在我的脚本的当前迭代中,我find两次处理文件。
find /var/www/mysite -exec chown www-data:www-data {} \;
find /var/www/mysite -type f -exec chmod 775 {} \;
Run Code Online (Sandbox Code Playgroud)
我认为如果我可以使用单个命令更改权限和所有者/组会很好。在谷歌搜索之后,我惊讶地发现这样的命令、参数或选项不存在。
我可以同时更改权限和所有权,以避免find对每个文件重复两次吗?
编辑社区编辑或帖子或其他内容表明此问题与“使用 1 个命令更改所有文件夹权限”重复。这个问题是不同的,因为它要求同时更改权限和 所有权,而不仅仅是权限。
shell ×4
bash ×2
command-line ×2
permissions ×2
shell-script ×2
ack ×1
backup ×1
chmod ×1
diff ×1
filesystems ×1
find ×1
git ×1
grep ×1
ls ×1
ownership ×1
password ×1
ssh ×1
subversion ×1
xargs ×1