当前位置: 首页 > 知识库问答 >
问题:

tar命令不断捆绑整个目录路径

阎建中
2023-03-14

我在/home/user/archived/myFiles中有几个子目录,每个子目录中都有文件,我试图将它们捆绑到一个tar文件中。问题是,它一直绑定完整的目录路径,而不是myFiles文件夹中的所有内容。

当我解压缩文件时,我只希望里面所有捆绑的子目录/文件都出现在我提取文件的目录中,而不必通过一系列创建的文件夹。

相反,当我当前解压缩文件时,我得到一个“主页”文件夹,我必须通过/主页/用户/存档/我的文件才能访问所有文件。

我尝试使用我在这里看到的在线建议的-C标志标记一个目录,但不要在存档中存储完整的绝对路径,您可以在存档中插入完整目录的参数减去最后一个文件夹,然后是包含所有内容的最后一个文件夹的名称你想要捆绑。但是tar命令不起作用,因为我收到了一个没有这样的文件或目录错误。

#!/bin/bash

archivedDir="/home/user/archived/myFiles"

tar -czvf "archived-files.tar.gz" "${archivedDir}"/*

rm -vrf "${archivedDir}"/*

# Attempt with -C flag
#tar -cvf "${archivedDir}/archived-files.tar.gz" -C "${archivedDir}" "/*"

例如,如果我在 /home/user/存档/myFiles 上执行了一个 ls,它列出了两个名为 folderOne 和 folderTwo 的目录,并且我运行了这个 bash 脚本,并在 /home/user/存档/myFiles 上再次执行了一个 ls,则该目录应该只包含存档的文件.tar.gz。

如果我提取tar文件,就会出现folderOne和folderTwo。

共有1个答案

孟征
2023-03-14

正如我已经在这里解释的那样,您应该首先更改到此目录,然后创建存档。所以将您的脚本更改为如下内容:

archivedDir="/home/user/archived/myFiles"
cd $archivedDir
tar -czvf "../archived-files.tar.gz" *

这将在上层目录中创建存档,因此您不会使用下一个命令将其删除
提取应类似于:

archivedDir="/home/user/archived/myFiles"
cd $archivedDir
tar -xzvf "../archived-files.tar.gz" 
 类似资料:
  • 问题内容: 在备份Shell脚本的一部分中,我具有以下命令: 当我列出档案的内容时,我得到: 但是我想从档案中的目录和文件名中删除该部分,以简化提取过程并避免无用的常量目录结构。永远不会知道,以防万一我将备份的网站提取到Web数据未存储在的地方。 对于上面的示例,我想拥有: 因此,当我提取文件时,文件将被提取到当前目录中,而后我无需再移动提取的文件,因此子目录结构得以保留。 关于tar和在网络上以

  • 我在备份shell脚本的部分中有以下命令: 因此,当我解压时,文件被解压在当前目录中,之后我不需要移动被解压的文件,这样子目录结构就被保留了。 在中和web上的其他地方已经有很多关于tar和备份的问题,但大多数问题要求删除整个子目录结构(扁平化),或者只是添加或删除名称中的初始/(我不知道在提取时它到底改变了什么),而不是更多。 在阅读了这里和那里找到的一些解决方案以及手册之后,我尝试了: 但没有

  • 问题内容: 是否有一个简单的shell命令/脚本支持将某些文件/文件夹排除在存档之外? 我有一个目录,该目录需要与一个子目录一起存档,该子目录包含许多不需要备份的非常大的文件。 不完全解决方案: 该命令匹配给定的模式并排除了这些文件,但是我需要忽略特定的文件和文件夹(完整的文件路径),否则可能会排除有效的文件。 我还可以使用find命令创建文件列表,并排除我不想存档的文件并将该列表传递给tar,但

  • 本文向大家介绍linux tar命令简介,包括了linux tar命令简介的使用技巧和注意事项,需要的朋友参考一下 一、使用介绍 tar命令用来打包,解包和压缩。 1、名词区分 打包:将一大堆文件或目录变成一个总的文件【tar命令】 压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】 Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这

  • 我创建了一个shell脚本,用于执行系统升级。 在终端屏幕上,我们只想打印几条消息来通知用户更新的进度。 部分更新创建文件夹的tar文件以供备份-但当tar命令运行时,它会在屏幕上列出当前正在压缩的所有文件和文件夹-是否可以停止此信息出现在终端屏幕上?

  • 本文向大家介绍17个Linux tar命令实用示例,包括了17个Linux tar命令实用示例的使用技巧和注意事项,需要的朋友参考一下 Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)是类 Unix 系统中使用最广泛的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 g