小编cap*_*heo的帖子

提取 tar 存档,不包括特定文件夹及其内容

使用 PHP,我用于exec("tar -xf archive.tar -C /home/user/target/folder")将特定存档 (archive.tar) 的内容提取到目标目录 (/home/user/target/folder) 中,以便目标目录的所有现有内容将被新内容覆盖包含在档案中。

它工作正常,目标目录中的所有文件在提取后都将被覆盖,但我想忽略存档中的一个目录(从提取并覆盖目标文件夹中的现有目录)...

例如,archive.tar 包含:

文件夹A/

文件夹B/

文件夹C/

文件夹D/

文件A.php

文件B.php

文件C.xml

我如何提取(并覆盖)除(例如)之外的folderC/所有内容?换句话说,我希望folderC 及其内容在用户目录中保持完整,并且不被tar 存档中包含的内容覆盖。

有什么建议么?

(托管服务器上的 Tar 是 GNU 版本 1.23。)

linux tar

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

Bash脚本使用XMLStarlet将xml元素解析为key = value对

我有这个xml文件(filename:myFile.xml)和用户的数据:

<?xml version="1.0" encoding="utf-8"?>
<params>
    <username>jDoe</username>
    <password>abc123</password>
    <firstname>John</firstname>
    <lastname>Doe</lastname>
    <email>jdoe@example.com</email>
    <country>Germany</country>
</params>
Run Code Online (Sandbox Code Playgroud)

我可以在我的bash脚本中打开它并使用"for"循环来迭代它的内容:

for i in $(xmlstarlet select -t -v '/params/*' myFile.xml)
do
   echo $i
done
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到:

jDoe
abc123
John
Doe
jdoe@example.com
Germany
Run Code Online (Sandbox Code Playgroud)

如何将每个值与其相对名称相关联,并创建一个bash脚本变量,如下所示:

username="jDoe"
password="abc123"
firstname="John"
lastname="Doe"
email="jdoe@example.com"
country="Germany"
Run Code Online (Sandbox Code Playgroud)

换句话说,对于每个标记,我想读取它的名称和它的值,然后创建一个bash变量.即:

tagname="value"
Run Code Online (Sandbox Code Playgroud)

我更喜欢循环遍历标签,因为它们比这个例子更多,并不总是相同.

有什么建议?

xml bash sh xmlstarlet

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

标签 统计

bash ×1

linux ×1

sh ×1

tar ×1

xml ×1

xmlstarlet ×1