我有以下目录结构:
/home/
|__dirA/
|__ dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
|__dirB/
|__ dir_to_save_in/
|__dirC/
backup_zip_script.sh
Run Code Online (Sandbox Code Playgroud)
backup_zip_script.sh包含(除其他外)命令(src):
tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz /home/dirA/dir_to_zip
Run Code Online (Sandbox Code Playgroud)
也就是说:我希望压缩目录~/dirA/dir_to_zip,将压缩的存档保存在 中~/dirB/dir_to_save_in/,并使用位于 中的脚本来执行此操作~/dirC/。
上面的命令tar可以工作,但是解压缩保存的存档会产生完整的目录结构:
/home/
|__dirA/
|__ dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
Run Code Online (Sandbox Code Playgroud)
当我只想:
dir_to_zip/
|__ file1.txt
|__ file2.txt
|__ ...
Run Code Online (Sandbox Code Playgroud)
如何将目录压缩到另一个位置(这样我就必须指定完整的绝对路径),但只压缩该目录而不压缩它之前的所有级别?
我也可以简单地使用cd /home/dirA/ && tar......但我更愿意看看是否还存在其他解决方案。
正如评论中提到的,如果您的实现支持,请使用-C“更改到目标目录”选项:tar
tar -czvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA dir_to_zip
Run Code Online (Sandbox Code Playgroud)
提取存档时也可以使用此选项,例如
tar -xzvf /home/dirB/dir_to_save_in/backup.tar.gz -C /home/dirA
Run Code Online (Sandbox Code Playgroud)
将存档的内容提取到/home/dirA.