tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作
今天下午写阿狸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执行全局变量保存的时候,所有文件都没有成功保存——还直接把本地文件清空了!!!
当时的我是真的欲哭无泪啊,都不知道如何是好
vscode的时间线
功能帮我保存了一部分文件,可是绝大部分文件都是程序生成的,没有经过vscode,其自然也就没有保存历史版本,这可给我整难受了
要不是之前有一个val-bot-test
目录用于代码测试,那就几乎等同于阿狸bot的用户信息全部丢失,最最最最难受的,还是我bot记录了好久的服务器日志啊,本来有3w多cmd的,现在恢复的文件还是几个月前的,数据量少了好多……
唉,不说这些玩意了,今天我们要来康康怎么在linux下用tar
命令打包和压缩文件夹,留作备份!
参考 https://blog.csdn.net/catoop/article/details/40651947
以当前目录下的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
只是一个用于标明的好习惯
下面的命令是分别查看不同压缩格式的压缩包里面的文件目录的,其会直接在bash打印出来
tar -tvf ./code.tar
tar -ztvf ./code.tar.gz
tar -jtvf ./code.tar.bz2
解压的文件会默认存在当前目录
tar -xvf ./code.tar
tar -zxvf ./code.tar.gz
tar -jxvf ./code.tar.bz2
假设我们需要解压code.tar
里面test
目录的文件,可以用下面的命令
tar -xvf ./code.tar test
知道这几个用法,就基本够用了!
现在我需要压缩的是code里面的python运行代码,其中会有一个没有用的__pycache_
,我们应该将其忽略,以减小压缩包体积
下面的命令就是忽略code
路径下所有__pycache__
文件或者文件目录
tar -zcvf code.tar.gz --exclude=*__pycache__ code
注意,忽略的路径后面不需要带/
,否则还是会被打包。比如下面的用法就是错的
tar -zcvf code.tar.gz --exclude=*__pycache__/ code #错误
像我今天出现这样的情况,实在是不应该!
阿狸bot是有vip业务的,vip信息文件的丢失,也很有可能会导致vip用户的丢失。更别提还有广大的普通用户在使用阿狸呢。
平时我知道要在云盘、nas备份自己的代码、笔记、学习资料等等个人文件,却忘记了云服务器上的bot同样需要备份
这下可算是吸取教训了,一次性把所有bot都给备份了!
tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作
今天下午写阿狸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执行全局变量保存的时候,所有文件都没有成功保存——还直接把本地文件清空了!!!
当时的我是真的欲哭无泪啊,都不知道如何是好
vscode的时间线
功能帮我保存了一部分文件,可是绝大部分文件都是程序生成的,没有经过vscode,其自然也就没有保存历史版本,这可给我整难受了
要不是之前有一个val-bot-test
目录用于代码测试,那就几乎等同于阿狸bot的用户信息全部丢失,最最最最难受的,还是我bot记录了好久的服务器日志啊,本来有3w多cmd的,现在恢复的文件还是几个月前的,数据量少了好多……
唉,不说这些玩意了,今天我们要来康康怎么在linux下用tar
命令打包和压缩文件夹,留作备份!
参考 https://blog.csdn.net/catoop/article/details/40651947
以当前目录下的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
只是一个用于标明的好习惯
下面的命令是分别查看不同压缩格式的压缩包里面的文件目录的,其会直接在bash打印出来
tar -tvf ./code.tar
tar -ztvf ./code.tar.gz
tar -jtvf ./code.tar.bz2
解压的文件会默认存在当前目录
tar -xvf ./code.tar
tar -zxvf ./code.tar.gz
tar -jxvf ./code.tar.bz2
假设我们需要解压code.tar
里面test
目录的文件,可以用下面的命令
tar -xvf ./code.tar test
知道这几个用法,就基本够用了!
现在我需要压缩的是code里面的python运行代码,其中会有一个没有用的__pycache_
,我们应该将其忽略,以减小压缩包体积
下面的命令就是忽略code
路径下所有__pycache__
文件或者文件目录
tar -zcvf code.tar.gz --exclude=*__pycache__ code
注意,忽略的路径后面不需要带/
,否则还是会被打包。比如下面的用法就是错的
tar -zcvf code.tar.gz --exclude=*__pycache__/ code #错误
像我今天出现这样的情况,实在是不应该!
阿狸bot是有vip业务的,vip信息文件的丢失,也很有可能会导致vip用户的丢失。更别提还有广大的普通用户在使用阿狸呢。
平时我知道要在云盘、nas备份自己的代码、笔记、学习资料等等个人文件,却忘记了云服务器上的bot同样需要备份
这下可算是吸取教训了,一次性把所有bot都给备份了!