【Linux】tar命令打包 | 查看压缩文件 | 打包时忽略文件

news2024/11/14 6:04:56

tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作

1.起因

今天下午写阿狸bot的代码的时候,写错了aiofiles的保存操作

# 正确写法
async def write_file_aio(path:str, value):
    async with aiofiles.open(path, 'w', encoding='utf-8') as f:
        await f.write(json.dumps(value, indent=2, sort_keys=True,ensure_ascii=False))
        
# 错误写法
# 前面是一样的
await f.write(json.dump(value, indent=2, sort_keys=True,ensure_ascii=False))

注意这两个函数,一个是json.dump;一个是json.dumps

就是因为这里写错了,导致bot执行全局变量保存的时候,所有文件都没有成功保存——还直接把本地文件清空了!!!

QQ图片20220419103148

当时的我是真的欲哭无泪啊,都不知道如何是好

image-20230116214455718

vscode的时间线功能帮我保存了一部分文件,可是绝大部分文件都是程序生成的,没有经过vscode,其自然也就没有保存历史版本,这可给我整难受了

image-20230116215109060

image-20230116215127228

要不是之前有一个val-bot-test目录用于代码测试,那就几乎等同于阿狸bot的用户信息全部丢失,最最最最难受的,还是我bot记录了好久的服务器日志啊,本来有3w多cmd的,现在恢复的文件还是几个月前的,数据量少了好多……


唉,不说这些玩意了,今天我们要来康康怎么在linux下用tar命令打包和压缩文件夹,留作备份!

2.tar命令打包

参考 https://blog.csdn.net/catoop/article/details/40651947

2.1 将整个目录打包

以当前目录下的code文件夹为例

tar -cvf ./code.tar ./code #仅打包不压缩
tar -zcvf ./code.tar.gz ./code #打包,gzip压缩
tar -jcvf ./code.tar.bz2 ./code #打包,bzip2压缩

注意,这里的./code.tar是生成的目标文件,./code是源路径;目标文件的命名没有要求,命名成tar.gz/tar.bz2只是一个用于标明的好习惯

2.2 查看压缩包里面的文件

下面的命令是分别查看不同压缩格式的压缩包里面的文件目录的,其会直接在bash打印出来

tar -tvf ./code.tar 
tar -ztvf ./code.tar.gz 
tar -jtvf ./code.tar.bz2 

2.3 解压文件

解压的文件会默认存在当前目录

tar -xvf ./code.tar 
tar -zxvf ./code.tar.gz 
tar -jxvf ./code.tar.bz2 

2.4 解压一部分文件

假设我们需要解压code.tar里面test目录的文件,可以用下面的命令

tar -xvf ./code.tar test

知道这几个用法,就基本够用了!

2.5 打包的时候忽略一些文件

现在我需要压缩的是code里面的python运行代码,其中会有一个没有用的__pycache_,我们应该将其忽略,以减小压缩包体积

下面的命令就是忽略code路径下所有__pycache__文件或者文件目录

tar -zcvf code.tar.gz --exclude=*__pycache__ code

注意,忽略的路径后面不需要带/,否则还是会被打包。比如下面的用法就是错的

tar -zcvf code.tar.gz --exclude=*__pycache__/ code #错误

3.一定要多多备份

像我今天出现这样的情况,实在是不应该!

阿狸bot是有vip业务的,vip信息文件的丢失,也很有可能会导致vip用户的丢失。更别提还有广大的普通用户在使用阿狸呢。

平时我知道要在云盘、nas备份自己的代码、笔记、学习资料等等个人文件,却忘记了云服务器上的bot同样需要备份

image-20230116220931405

这下可算是吸取教训了,一次性把所有bot都给备份了!


title: 【Linux】tar命令打包 | 查看压缩文件 | 打包时忽略文件
date: 2023-01-16 21:30:16
tags: [Linux,阿狸开发日志,Python]
categories: [玩上Linux]

tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作

1.起因

今天下午写阿狸bot的代码的时候,写错了aiofiles的保存操作

# 正确写法
async def write_file_aio(path:str, value):
    async with aiofiles.open(path, 'w', encoding='utf-8') as f:
        await f.write(json.dumps(value, indent=2, sort_keys=True,ensure_ascii=False))
        
# 错误写法
# 前面是一样的
await f.write(json.dump(value, indent=2, sort_keys=True,ensure_ascii=False))

注意这两个函数,一个是json.dump;一个是json.dumps

就是因为这里写错了,导致bot执行全局变量保存的时候,所有文件都没有成功保存——还直接把本地文件清空了!!!

QQ图片20220419103148

当时的我是真的欲哭无泪啊,都不知道如何是好

image-20230116214455718

vscode的时间线功能帮我保存了一部分文件,可是绝大部分文件都是程序生成的,没有经过vscode,其自然也就没有保存历史版本,这可给我整难受了

image-20230116215109060

image-20230116215127228

要不是之前有一个val-bot-test目录用于代码测试,那就几乎等同于阿狸bot的用户信息全部丢失,最最最最难受的,还是我bot记录了好久的服务器日志啊,本来有3w多cmd的,现在恢复的文件还是几个月前的,数据量少了好多……


唉,不说这些玩意了,今天我们要来康康怎么在linux下用tar命令打包和压缩文件夹,留作备份!

2.tar命令打包

参考 https://blog.csdn.net/catoop/article/details/40651947

2.1 将整个目录打包

以当前目录下的code文件夹为例

tar -cvf ./code.tar ./code #仅打包不压缩
tar -zcvf ./code.tar.gz ./code #打包,gzip压缩
tar -jcvf ./code.tar.bz2 ./code #打包,bzip2压缩

注意,这里的./code.tar是生成的目标文件,./code是源路径;目标文件的命名没有要求,命名成tar.gz/tar.bz2只是一个用于标明的好习惯

2.2 查看压缩包里面的文件

下面的命令是分别查看不同压缩格式的压缩包里面的文件目录的,其会直接在bash打印出来

tar -tvf ./code.tar 
tar -ztvf ./code.tar.gz 
tar -jtvf ./code.tar.bz2 

2.3 解压文件

解压的文件会默认存在当前目录

tar -xvf ./code.tar 
tar -zxvf ./code.tar.gz 
tar -jxvf ./code.tar.bz2 

2.4 解压一部分文件

假设我们需要解压code.tar里面test目录的文件,可以用下面的命令

tar -xvf ./code.tar test

知道这几个用法,就基本够用了!

2.5 打包的时候忽略一些文件

现在我需要压缩的是code里面的python运行代码,其中会有一个没有用的__pycache_,我们应该将其忽略,以减小压缩包体积

下面的命令就是忽略code路径下所有__pycache__文件或者文件目录

tar -zcvf code.tar.gz --exclude=*__pycache__ code

注意,忽略的路径后面不需要带/,否则还是会被打包。比如下面的用法就是错的

tar -zcvf code.tar.gz --exclude=*__pycache__/ code #错误

3.一定要多多备份

像我今天出现这样的情况,实在是不应该!

阿狸bot是有vip业务的,vip信息文件的丢失,也很有可能会导致vip用户的丢失。更别提还有广大的普通用户在使用阿狸呢。

平时我知道要在云盘、nas备份自己的代码、笔记、学习资料等等个人文件,却忘记了云服务器上的bot同样需要备份

image-20230116220931405

这下可算是吸取教训了,一次性把所有bot都给备份了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis持久层框架详细解读:核心配置文件

文章目录1. 前言2. 多环境配置3. 类型别名4. 对象工厂5. 总结1. 前言 前面我们在使用 MyBatis 开发时,编写核心配置文件替换 JDBC 中的连接信息,解决了 JDBC 硬编码的问题。其实,MyBatis 核心配置文件中还可以配置很多的内容。 MyBatis 的配…

mongodb分片

分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用.1.分片简介分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更大的负载.使用几乎…

屏幕录制下载推荐(可以无水印录制视频)

您有没有遇到过这种情况,在使用录屏工具录制电脑屏幕时,录制出来的视频是带有明显水印的。那有没有可以无水印录制的屏幕录制推荐呢?当然有。最近小编发现了一款可以无水印(自定义图文水印)录制的视频,快来…

Pycharm误触ignore的解决方法--有图

步骤1:进入pycharm编辑器之后,找到菜单栏中的file选项,点击之后会有一个下拉列表,直接选择settings,进入到设置的窗口。步骤2:在设置界面的左侧,找到Inspections选项,点击之后&#…

JavaScript 练手小技巧:拖拽事件、把图片拖拽入页面

HTML5 新增了拖拽事件 drag,利用它可以实现把外部文件拖拽入页面中,可以实现文件的读取,上传等等功能。 拖拽,又叫拖拉、拖动,英文为 drag。 拖拽事件是 HTML5 新增的事件操作。 拖拽指的是,用户在某个对…

【Rust】4. Rust 基础

4. Rust 基础 4.1 变量和可变性 4.1.1 常量 const xxx: type ...:常量使用 const 来定义,且必须注明值的类型常量在声明它的作用域之中,常量在整个程序生命周期中都有效 4.1.2 隐藏(Shadowing) 隐藏(Sh…

基于卡尔曼滤波器的PID控制-1

采用M语言对算例进行仿真!!设置控制对象传递函数:取采样时间为1ms,采用Z变换将对象离散化,并描述为离散状态方程的形式:x(k 1) Ax(k) B(u(k)wk))y(k) Cx(k)带有测量噪声的被控对象输出为:yv(k)C…

Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细报错总结)

Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细)前期准备—环境依赖Cmake(编译器)依赖环境Python环境streamer环境图像处理依赖安装OpenCV编译OpenCV配置cmake编译参数make编译配置OpenCV动态库验证OpenCV环境# python环…

724. 寻找数组的中心下标——你行吗???

兄弟们,今早遇到了一个题,案例看起来很简单,于是就尝试起来,求知己😭题目描述724. 寻找数组的中心下标难度简单511收藏分享切换为英文接收动态反馈给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中…

一文了解 Java 中 so 文件的加载原理

前言 无论是 Android 开发者还是 Java 工程师应该都有使用过 JNI 开发,但对于 JVM 如何加载 so、Android 系统如何加载 so,可能鲜有时间了解。 本文通过代码、流程解释,带大家快速了解其加载原理,扫清困惑。 1. System#load() …

3.1.2 访问控制符及修饰符

文章目录1.访问控制符2.静态字段/方法/代码块2.1 静态字段2.2 静态常量2.3 静态方法2.4 特点2.5 static入门案例2.6 静态的调用关系2.7 静态代码块2.7.1 格式2.7.2 特性:2.7.3 执行顺序2.7.4 案例练习3.final的概念3.1 特点3.2 final入门案例1.访问控制符 在JAVA中…

【HBase——陌陌海量存储案例】8. 基于Phoenix消息数据查询(下)

索引示例二:创建本地索引 需求 在程序中,我们可能会根据订单ID、订单状态、支付金额、支付方式、用户ID来查询订单。所以,我们需要在这些列上来查询订单。 针对这种场景,我们可以使用本地索引来提高查询效率。 创建本地索引 cre…

超全小程序开发的学习 知识点

第一章:邂逅小程序开发 01_小程序开发和各个平台小程序的介绍 小程序加载的时候是双线程模型.wxml文件和wxss文件是一个线程,js和json文件是一个线程。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEP3PUoo-1675132790458…

七步让您的MySQL服务器更安全

本文将以最常见的数据库管理系统——MySQL为例,向您介绍如何通过7步骤来安全加固数据库服务器。 不知您是否发现一种现象,那些初学渗透测试的人员往往过于关注应用的安全性,而对数据库的安全性不太重视。他们殊不知,没有数据库的…

上海亚商投顾:兔年首日开门红 北向资金净流入超186亿

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪两市早盘受外围影响大幅高开,随后指数高开低走,板块及个股相对活跃,汽车产业链&a…

视频图像分析处理流程(完整版)

来源:投稿 作者:LSC 编辑:学姐 一、视频分析处理的完整流程 (1)视频编解码的入门知识 尽管压缩工具五花八门,但是他们的目的都只有一个:都是为了减小文件的占用空间。 除去我们常见的.zip,.7z&#xff0…

MyBatis框架如何实现数据查询?有几种方法?

在实际开发中,查询操作通常都会涉及到单条数据的精确查询,以及多条数据的模糊查询。那么使用MyBatis框架是如何进行这两种查询的呢?接下来,本小节将讲解下如何使用MyBatis框架根据客户编号查询客户信息,以及根据客户名…

【前沿技术】在安全且可靠的区块链基础设施中运行业务条线应用

发表时间:2022年4月27日 信息来源:coingeek.com 了解特定企业的业务需求将使你能够构建出一个可扩容的业务条线应用,它将按照你想要的方式进行运作,并在不可篡改的BSV区块链中保存相关记录。 大多数企业都有一个业务条线&#xf…

《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识

1.简介 有的小伙伴或者童鞋们可能会好奇地问,不是讲解和分享抓包工具了怎么这里开始讲解HTTP和HTTPS协议了。这是因为你对HTTP协议越了解,你就能越掌握Fiddler的使用方法,反过来你越使用Fiddler,就越能帮助你了解HTTP协议。 Fid…

HashMap原理分析

HashMap原理分析JDK7 HashMap1、模型介绍2、底层实现原理3、描述一下put的过程4、HashMap扩容机制:5、HashMap中的循环链表是如何产生的6、HashMap和HashTable的区别7、HashMap为什么用红黑树而不用B树?JDK8 HashMapJDK7 HashMap 1、模型介绍 HashMap在…