search
HomeDatabaseMysql Tutorial不用任何第三方工具,如何备份InnoDB?生产环境

本人曾经用过的备份方式有:mysqldump、mysqlhotcopy、BACKUP TABLE 、SELECT INTO UTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用

        本人曾经用过的备份方式有:mysqldump、mysqlhotcopy、BACKUP TABLE 、SELECT INTO UTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb 所有的表都保存在同一个数据文件 ibdata1 中(也可能是多个文件,或者是独立的表空间文件),相对来说比较不好备份,免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump。 

1.mysqldump备份 

mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。 
示例:mysqldump -uroot -p database table > /home/jobs/back.sql 
mysqldump也可做增量备份,mysqldump相关参数网上较多,就不在此一一赘述了 

2.mysqlhotcopy备份 

mysqlhotcopy 是一个 PERL 程序。它使用 LOCK TABLES、FLUSH 
TABLES 和 cp 或 scp 
来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库文件(包括数据表定义文件、数据文件、索引文件)所在的机器上。 
mysqlhotcopy 只能用于备份 MyISAM,并且只能运行在 类Unix 和 NetWare 系统上。 
mysqlhotcopy 支持一次性拷贝多个数据库,同时还支持正则表达。 
示例: root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root 
-p=123456 database /tmp (把数据库目录 database 拷贝到 /tmp 
下)root#/usr/local/mysql/bin/mysqlhotcopy -h=localhost -u=root -p=123456 
db_name_1 ... db_name_n /tmproot#/usr/local/mysql/bin/mysqlhotcopy 
-h=localhost -u=root -p=123456 db_name./regex/ 
/tmp更详细的使用方法请查看手册,或者调用下面的命令来查看 mysqlhotcopy 的帮助: 
perldoc /usr/local/mysql/bin/mysqlhotcopy注意,想要使用 mysqlhotcopy,必须要有 
SELECT、RELOAD(要执行 FLUSH TABLES) 权限,并且还必须要能够有读取 datadir/db_name 目录的权限。 

还原mysqlhotcopy 备份出来的是整个数据库目录,使用时可以直接拷贝到 mysqld 
指定的 datadir (在这里是 /usr/local/mysql/data/)目录下即可,同时要注意权限的问题,如下例: root#cp 
-rf db_name /usr/local/mysql/data/root#chown -R nobody:nobody 
/usr/local/mysql/data/ (将 db_name 目录的属主改成 mysqld 运行用户) 

3.SQL 语法备份 

3.1 备份BACKUP TABLE 语法其实和 mysqlhotcopy 
的工作原理差不多,都是锁表,然后拷贝数据文件。它能实现在线备份,但是效果不理想,因此不推荐使用。它只拷贝表结构文件和数据文件,不同时拷贝索引文 
件,因此恢复时比较慢。例子: BACK TABLE tbl_name TO '/tmp/db_name/';注意,必须要有 FILE 
权限才能执行本SQL,并且目录 /tmp/db_name/ 必须能被 mysqld 用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。 
恢复用 BACKUP TABLE 方法备份出来的文件,可以运行 RESTORE TABLE 语句来恢复数据表。例子: RESTORE TABLE FROM '/tmp/db_name/';权限要求类似上面所述。 

3.2 SELECT INTO OUTFILE 则是把数据导出来成为普通的文本文件,可以自定义字段间隔的方式,方便处理这些数据。例子: 
SELECT INTO OUTFILE '/tmp/db_name/tbl_name.txt' FROM tbl_name;注意,必须要有 
FILE 权限才能执行本SQL,并且文件 /tmp/db_name/tbl_name.txt 必须能被 mysqld 
用户可写,导出的文件不能覆盖已经存在的文件,以避免安全问题。 
用 SELECT INTO OUTFILE 方法备份出来的文件,可以运行 LOAD DATA INFILE 语句来恢复数据表。例子: LOAD 
DATA INFILE '/tmp/db_name/tbl_name.txt' INTO TABLE 
tbl_name;权限要求类似上面所述。倒入数据之前,数据表要已经存在才行。如果担心数据会发生重复,可以增加 REPLACE 
关键字来替换已有记录或者用 IGNORE 关键字来忽略他们。 

4.启用二进制日志(binlog) 

采用 binlog 的方法相对来说更灵活,省心省力,而且还可以支持增量备份。 
启用 binlog 时必须要重启 mysqld。首先,关闭 mysqld,打开 my.cnf,加入以下几行: 
server-id = 1 
log-bin = binlog 
log-bin-index = binlog.index 
然后启动 mysqld 就可以了。运行过程中会产生 binlog.000001 以及 binlog.index,前面的文件是 mysqld 
记录所有对数据的更新操作,后面的文件则是所有 binlog 的索引,都不能轻易删除。关于 binlog 的信息请查看手册。 
需要备份时,可以先执行一下 SQL 语句,让 mysqld 终止对当前 binlog 
的写入,就可以把文件直接备份,这样的话就能达到增量备份的目的了: FLUSH LOGS;如果是备份复制系统中的从服务器,还应该备份 
master.info 和 relay-log.info 文件。 
备份出来的 binlog 文件可以用 MySQL 提供的工具 mysqlbinlog 来查看,如: 
/usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001该工具允许你显示指定的数据库下的所有 
SQL 语句,并且还可以限定时间范围,相当的方便,详细的请查看手册。 
恢复时,可以采用类似以下语句来做到: /usr/local/mysql/bin/mysqlbinlog /tmp/binlog.000001 
| mysql -uyejr -pyejr db_name把 mysqlbinlog 输出的 SQL 语句直接作为输入来执行它。 
如果你有空闲的机器,不妨采用这种方式来备份。由于作为 slave 的机器性能要求相对不是那么高,因此成本低,用低成本就能实现增量备份而且还能分担一部分数据查询压力,何乐而不为呢? 

5.拷贝文件 

直接备份数据文件相较前几种方法,备份数据文件最为直接、快速、方便,缺点是基本上不能实现增量备份。 
为了保证数据的一致性,需要在靠背文件前,执行以下 SQL 语句: FLUSH TABLES WITH READ 
LOCK;也就是把内存中的数据都刷新到磁盘中,同时锁定数据表,以保证拷贝过程中不会有新的数据写入。这种方法备份出来的数据恢复也很简单,直接拷贝回 
原来的数据库目录下即可。 
注意,对于 Innodb 类型表来说,还需要备份其日志文件,即 ib_logfile* 文件。因为当 Innodb 表损坏时,就可以依靠这些日志文件来恢复。 

6.利用rsync备份 
rsync作为同步工具也可以用来做备份,但要配置服务器端和客户端 
示例rsync -vzrtopg --progress --delete root@192.168.1.3::root /tmp/ 
相关rsync配置可参考http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258.html 
缺点是rsync是根据文件修改时间做的增量备份,所以备份数据库都是全备,并且配置比较麻烦. 


[问题案例]使用mysql自带命令这种方式备份的,发现恢复起来,很慢:

mysqldump --opt -huserdb -usupport -pPassword --skip-lock-tables bbs user>/data/backup/user_basic.sql
而且恢复过程中,PHPMYADMIN查看数据库内容居然是空的,结构则变成了MyISAM,但是数据目录下的文件大小始终是在缓慢增长.

不知道怎么回事.

不用任何第三方工具的话,你上面的方法就是比较合适的了,更多细节看本站关于mysqldump的文章.

my.cnf生成器(公测版) | MySQL 中文网 http://imysql.com/my_cnf_generator

一、备份的目的

做灾难恢复:对损坏的数据进行恢复和还原
需求改变:因需求改变而需要把数据还原到改变以前
测试:测试新功能是否可用

二、备份需要考虑的问题

可以容忍丢失多长时间的数据;
恢复数据要在多长时间内完; 
恢复的时候是否需要持续提供服务;
恢复的对象,是整个库,多个表,还是单个库,单个表。

三、备份的类型

1、根据是否需要数据库离线

冷备(cold backup):需要关mysql服务,读写请求均不允许状态下进行;
温备(warm backup): 服务在线,但仅支持读请求,不允许写请求;
热备(hot backup):备份的同时,业务不受影响。

注:

1、这种类型的备份,取决于业务的需求,而不是备份工具
2、MyISAM不支持热备,InnoDB支持热备,但是需要专门的工具

2、根据要备份的数据集合的范围
完全备份:full backup,备份全部字符集。
增量备份: incremental backup 上次完全备份或增量备份以来改变了的数据,不能单独使用,要借助完全备份,备份的频率取决于数据的更新频率。
差异备份:differential backup 上次完全备份以来改变了的数据。
建议的恢复策略:
完全+增量+二进制日志
完全+差异+二进制日志

3、根据备份数据或文件

物理备份:直接备份数据文件

优点:

备份和恢复操作都比较简单,能够跨mysql的版本,
恢复速度快,属于文件系统级别的

建议:

不要假设备份一定可用,要测试
mysql>check tables;检测表是否可用
逻辑备份: 备份表中的数据和代码

优点:

恢复简单、
备份的结果为ASCII文件,可以编辑
与存储引擎无关
可以通过网络备份和恢复

缺点:

备份或恢复都需要mysql服务器进程参与
备份结果占据更多的空间,
浮点数可能会丢失精度
还原之后,缩影需要重建

四:备份的对象

1、 数据;
2、配置文件;
3、代码:存储过程、存储函数、触发器
4、os相关的配置文件
5、复制相关的配置
6、二进制日志

五、备份和恢复的实现

1、利用select into outfile实现数据的备份与还原
1.1把需要备份的数据备份出来

复制代码代码如下:
mysql> use hellodb;     //打开hellodb库 
mysql> select * from students;  查看students的属性 
mysql> select * from students where Age > 30 into outfile ‘/tmp/stud.txt' ;   //将年龄大于三十的同学的信息备份出来 

注意:

备份的目录路径必须让当前运行mysql服务器的用户mysql具有访问权限

备份完成之后需要把备份的文件从tmp目录复制走,要不就失去备份的目的了

回到tmp目录下查看刚才备份的文件

[root@www ~]# cd /tmp

[root@www tmp]# cat stud.txt

3Xie Yanke53M216

4Ding Dian32M44

6Shi Qing46M5\N

13Tian Boguang33M2\N

25Sun Dasheng100M\N\N

[root@www tmp]#

你会发现是个文本文件。所以不能直接导入数据库了。需要使用load data infile 恢复

回到mysql服务器端,删除年龄大于30的用户,模拟数据被破坏

mysql> delete from students where Age > 30;

mysql> load data infile '/tmp/stud.txt' into table students;

2、利用mysqldump工具对数据进行备份和还原

mysqldump 常用来做温备,所以我们首先需要对想备份的数据施加读锁,

2.1 施加读锁的方式:

1.直接在备份的时候添加选项

--lock-all-tables 是对要备份的数据库的所有表施加读锁

--lock-table 仅对单张表施加读锁,即使是备份整个数据库,它也是在我们备份某张表的时候才对该表施加读锁,因此适用于备份单张表

2、在服务器端书写命令,

mysql> flush tables with read lock; 施加锁,表示把位于内存上的表统统都同步到磁盘上去,然后施加读锁

mysql> flush tables with read lock;释放读锁

但这对于InnoDB存储引擎来讲,虽然你也能够请求道读锁,但是不代表它的所有数据都已经同步到磁盘上,因此当面对InnoDB的时候,我们要使用mysql> show engine innodb status; 看看InnoDB所有的数据都已经同步到磁盘上去了,才进行备份操作。

2.2备份的策略:

完全备份+增量备份+二进制日志

演示备份的过程;

2.3 先给数据库做完全备份:

复制代码代码如下:
[root@www ~]# mysqldump -uroot --single-transaction --master-data=2 --databases hellodb > /backup/hellodb_`date +%F`.sql 

--single-transaction: 基于此选项能实现热备InnoDB表;因此,不需要同时使用--lock-all-tables; 
--master-data=2  记录备份那一时刻的二进制日志的位置,并且注释掉,1是不注释的 
--databases hellodb 指定备份的数据库

然后回到mysql服务器端,

2.4回到mysql服务器端更新数据

复制代码代码如下:
mysql> create table tb1(id int); 创建表 
mysql> insert into tb1 values (1),(2),(3);  插入数据,这里只做演示,随便插入了几个数据

2.5先查看完全备份文件里边记录的位置:


复制代码代码如下: [root@www backup]# cat hellodb_2013-09-08.sql | less 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000013', MASTER_LOG_POS=15684; 记录了二进制日志的位置 

2.6 在回到服务器端:

复制代码代码如下:
mysql> show master status; 显示此时的二进制日志的位置 
 从备份文件里边记录的位置到我们此时的位置,即为增量的部分 
+------------------+----------+--------------+------------------+ 
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+--------------+------------------+ 
| mysql-bin.000004 |      15982 |              |                  | 
+------------------+----------+--------------+------------------+

2.7做增量备份

复制代码代码如下:
[root@www backup]# mysqlbinlog --start-position=15694 --stop-position=15982
/mydata/data/mysql-bin.000013 > /backup/hellodb_`date +$F_%H`.sql

2.8再回到服务器

复制代码代码如下:
mysql> insert into tb1 values (4),(5); 在插入一些数值 
mysql> drop database hellodb;   删除hellodb库 

2.9导出这次得二进制日志:


复制代码代码如下:
[root@www backup]# mysqlbinlog --start-position=15982 /mydata/data/mysql-bin.000013 查看删除操作时二进制日志的位置 
[root@www backup]# mysqlbinlog --start-position=15982 --stop-position=16176 /mydata/data/mysql-bin.000013 > /tmp/hellodb.sql  //导出二进制日志 

2.10先让mysql离线

回到服务器端:

复制代码代码如下:
mysql> set sql_log_bin=0;  关闭二进制日志 
mysql> flush logs; 滚动下日志 

2.11模拟数据库损坏

复制代码代码如下: mysql> drop database hellodb;

2.12开始恢复数据:

复制代码代码如下:
[root@www ]# mysql [root@www ]# mysql [root@www ]# mysql

验证完成,显示结果为我们预想的那样

注:

1、真正在生产环境中,我们应该导出的是整个mysql服务器中的数据,而不是单个库,因此应该使用--all-databases
2、在导出二进制日志的时候,可以直接复制文件即可,但是要注意的是,备份之前滚动下日志。
3、利用lvm快照实现几乎热备的数据备份与恢复

3.1策略:

完全备份+二进制日志;

3.2准备:

注:事务日志必须跟数据文件在同一个LV上;

3.3创建lvm Lvm的创建这里就不多说了,想了解话点击http://www.jb51.net/LINUXjishu/105937.html

3.4 修改mysql主配置文件存放目录内的文件的权限与属主属组,并初始化mysql

复制代码代码如下:
[root@www ~]# mkdir /mydata/data             //创建数据目录 
[root@www ~]# chown mysql:mysql /mydata/data  //改属组属主 
[root@www ~]# 
[root@www ~]# cd /usr/local/mysql/    //必须站在此目录下       
[root@www mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data  //初始化mysql 

3.5修改配置文件:

复制代码代码如下:
vim /etc/my.cof 
datadir=/mydata/data   添加数据目录 
sync_binlog = 1  开启此功能 

3.6 启动服务

复制代码代码如下:
[root@www mysql]# service mysqld start 
mysql> set session sql_log_bin=0;  关闭二进制日志 
mysql> source /backup/all_db_2013-09-08.sql   读取备份文件

3.7回到mysql服务器:

复制代码代码如下:
mysql> FLUSH TABLES WITH READ LOCK; 请求读锁 
注:不要退出,另起一个终端: 
mysql> SHOW MASTER STATUS;          查看二进制文件的位置 
+------------------+----------+--------------+------------------+ 
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | 
+------------------+----------+--------------+------------------+ 
| mysql-bin.000004 |      107 |              |                  | 
+------------------+----------+--------------+------------------+ 
1 row in set (0.00 sec) 
mysql> FLUSH LOGS;  建议滚动下日志。这样备份日志的时候就会很方便了

3.8导出二进制文件,创建个目录单独存放

复制代码代码如下:
[root@www ~]# mkdir /backup/limian 
[root@www ~]# mysql -e 'show master status;' > /backup/limian/binlog.txt 
[root@www ~]#

3.9为数据所在的卷创建快照:

复制代码代码如下: [root@www ~]# lvcreate -L 100M -s -p r -n mysql_snap /dev/myvg/mydata

回到服务器端,释放读锁

复制代码代码如下:
mysql> UNLOCK TABLES; 
[root@www ~]# mount /dev/myvg/mysql_snap /mnt/data 
[root@www data]# cp * /backup/limian/ 
[root@www data]#lvremove /dev/myvg/mylv_snap 

3.10更新数据库的数据,并删除数据目录先的数据文件,模拟数据库损坏

复制代码代码如下:
mysql>  create table limiantb (id int,name CHAR(10)); 
mysql> insert into limiantb values (1,'tom'); 
[root@www data]# mysqlbinlog --start-position=187 mysql-bin.000003 > /backup/limian/binlog.sql 
[root@www backup]# cd /mydata/data/ 
[root@www data]#  rm -rf * 
[root@www ~]# cp -a /backup/limian/* /mydata/data/ 
[root@www data]# chown mysql:mysql *

3.11测试

启动服务

复制代码代码如下:
[root@www data]# service mysqld start 
[root@www data]# mysql 登陆测试 
mysql> SHOW DATABASES; 
mysql> SET sql_log_bin=0
mysql> source/backup/limian/binlog.sql; #二进制恢复 
mysql> SHOW TABLES;         #查看恢复结果 
mysql> SET sql_log_bin=1;   #开启二进制日志

注:此方式实现了接近于热备的方式备份数据文件,而且数据文件放在lvm中可以根据数据的大小灵活改变lvm的大小,备份的方式也很简单。

4、基于Xtrabackup做备份恢复(推荐)

支持InnoDB的物理热备份,支持完全备份,增量备份,而且速度非常快,而且支持InnoDB引擎的数据在不同数据库迁移
为了让xtrabackup支持更多的功能扩展,配置InnoDB每表一个文件的功能
在my.cnf的mysqld中加入此项: innodb_file_per_table=1
此项不启用将不支持备份单独的表
但如果之前没有启用这个选项,要实现单表一文件的话,可以用mysqldump导出数据,然后启用该选项,恢复回去后就是单表一文件了

官方站点:www.percona.com

优势:

1、快速可靠的进行完全备份
2、在备份的过程中不会影响到事务
3、支持数据流、网络传输、压缩,所以它可以有效的节约磁盘资源和网络带宽。
4、可以自动备份校验数据的可用性。

安装Xtrabackup

复制代码代码如下:
[root@www ~]# rpm -ivh percona-xtrabackup-2.1.4-656.rhel6.i686.rpm 

其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得

注意:在备份数据库的时候,我们应该具有权限,但需要注意的是应该给备份数据库时的用户最小的权限,以保证安全性,

4.1前提:

应该确定采用的是单表一个表空间,否则不支持单表的备份与恢复。
在配置文件里边的mysqld段加上

innodb_file_per_table = 1

4.2备份策略
完全备份+增量备份+二进制日志
4.3准备个目录用于存放备份数据

复制代码代码如下:
[root@www ~]# makdir /innobackup

4.4做完全备份:

复制代码代码如下:
[root@www ~]# innobackupex --user=root --password=mypass /innobackup/

注:

1、只要在最后一行显示 innobackupex: completed OK!,就说明你的备份是正确的。
2、另外要注意的是每次备份之后,会自动在数据目录下创建一个以当前时间点命名的目录用于存放备份的数据,那我们去看看都有什么

[root@www 2013-09-12_11-03-04]# ls
backup-my.cnf ibdata1 performance_schema xtrabackup_binary xtrabackup_checkpoints
hellodb mysql test xtrabackup_binlog_info xtrabackup_logfile
[root@www 2013-09-12_11-03-04]#
xtrabackup_checkpoints :备份类型、备份状态和LSN(日志序列号)范围信息;
xtrabackup_binlog_info :mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
xtrabackup_logfile :非文本文件,xtrabackup自己的日志文件
xtrabackup_binlog_pos_innodb :二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
backup-my.cnf :备份时数据文件中关于mysqld的配置

4.5回到mysql服务器端对数据进行更新操作

复制代码代码如下:
mysql> use hellodb; 
mysql> delete from students where StuID>=24;

4.6增量备份

复制代码代码如下:
innobackupex --user=root --password=mypass --incremental /innobackup/--incremental-basedir=/innobackup/2013-09-12_11-03-04/ 
--incremental  指定备份类型 
--incremental-basedir= 指定这次增量备份是基于哪一次备份的,这里是完全备份文件,这样可以把增量备份的数据合并到完全备份中去

4.7第二次增量

先去修改数据

复制代码代码如下:
mysql> insert into students (Name,Age,Gender,ClassID,TeacherID) values ('tom',33,'M',2,4); 
innobackupex --user=root --password=mypass --incremental /innobackup/ --incremental-basedir=/innobackup/2013-09-12_11-37-01/ 
 这里只须要把最后的目录改为第一次增量备份的数据目录即可 

4.8最后一次对数据更改但是没做增量备份

复制代码代码如下: mysql> delete from coc where id=14;

4.9把二进制日志文件备份出来,(因为最后一次修改,没做增量备份,要依赖二进制日志做时间点恢复)

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
内容创作神器!八个AI工具让你轻松提升10倍工作效率内容创作神器!八个AI工具让你轻松提升10倍工作效率Apr 12, 2023 pm 11:28 PM

随着互联网技术和人工智能的发展,越来越多的内容创作者开始采用各种AI工具来提高创作效率和质量。本文将介绍8个最流行的AI工具,它们可以帮助你轻松实现10倍的效率提升,让你更快地完成内容创作任务,同时保证内容的高质量和创意。Chatsonic一个类似chatgpt的聊天机器人,具有实时数据、图像、语音搜索等功能。专门为内容创作者设计的AI聊天机器人来提升你的生产力。网址:https://writesonic.com/chatMidjourney一个由人工智能驱动的系统,根据用户输入的提示创建图像。

如果您想最大限度地提高工作效率,请不要忽视这十种 AI 工具如果您想最大限度地提高工作效率,请不要忽视这十种 AI 工具Apr 07, 2023 pm 02:39 PM

ChatGPT 之前几十年来,人工智能 (AI) 一直在改变我们的生活和工作方式。从使用 AI 驱动的虚拟助手改善我们的个人生活,到通过智能自动化彻底改变整个行业,AI 一次又一次地证明了它的价值。但在 ChatGPT 之前,AI 过去常常执行特定的小任务,很少有人认真对待它。ChatGPT 之后有了 ChatGPT,世界变得疯狂了。就那么几天之内,人们都在谈论这种令人兴奋的语言模型的强大功能。重点突然转移到基于人工智能的工具上,越来越多的人开始使用这些基于人工智能的工具,从那时起,更多工具应运

用Python写了个小工具,再复杂的文件夹,分分钟帮你整理!用Python写了个小工具,再复杂的文件夹,分分钟帮你整理!Apr 11, 2023 pm 08:19 PM

糟透了我承认我不是一个爱整理桌面的人,因为我觉得乱糟糟的桌面,反而容易找到文件。哈哈,可是最近桌面实在是太乱了,自己都看不下去了,几乎占满了整个屏幕。虽然一键整理桌面的软件很多,但是对于其他路径下的文件,我同样需要整理,于是我想到使用Python,完成这个需求。效果展示我一共为将文件分为9个大类,分别是图片、视频、音频、文档、压缩文件、常用格式、程序脚本、可执行程序和字体文件。# 不同文件组成的嵌套字典 file_dict = { '图片': ['jpg','png','gif','webp

八个流行的 Python 可视化工具包,你喜欢哪个?八个流行的 Python 可视化工具包,你喜欢哪个?Apr 11, 2023 pm 11:43 PM

大家好,我是Python人工智能技术喜欢用 Python 做项目的小伙伴不免会遇到这种情况:做图表时,用哪种好看又实用的可视化工具包呢?之前文章里出现过漂亮的图表时,也总有读者在后台留言问该图表时用什么工具做的。下面,作者介绍了八种在 Python 中实现的可视化工具包,其中有些包还能用在其它语言中。快来试试你喜欢哪个?用 Python 创建图形的方法有很多,但是哪种方法是最好的呢?当我们做可视化之前,要先明确一些关于图像目标的问题:你是想初步了解数据的分布情况?想展示时给人们留下深刻印象?也许

17 个可以实现高效工作与在线赚钱的 AI 工具网站17 个可以实现高效工作与在线赚钱的 AI 工具网站Apr 11, 2023 pm 04:13 PM

自 2020 年以来,内容开发领域已经感受到人工智能工具的存在。1.Jasper AI网址:https://www.jasper.ai在可用的 AI 文案写作工具中,Jasper 作为那些寻求通过内容生成赚钱的人来讲,它是经济实惠且高效的选择之一。该工具精通短格式和长格式内容均能完成。Jasper 拥有一系列功能,包括无需切换到模板即可快速生成内容的命令、用于创建文章的高效长格式编辑器,以及包含有助于创建各种类型内容的向导的内容工作流,例如,博客文章、销售文案和重写。Jasper Chat 是该

人工智能刷脸测年龄人工智能刷脸测年龄Apr 09, 2023 pm 11:21 PM

​Instagram正在测试用户验证年龄的新方法,包括由第三方公司Yoti开发的一款人工智能工具,它可以通过扫描你的脸来估计你的年龄。按照官方规定,必须年满13岁才能注册Instagram账户。但多年来,该公司几乎没有努力执行这一规定。它甚至都懒得问新用户的生日,更不用说核实这些信息了。然而,直到2019年遭到隐私和儿童安全专家的猛烈抨击之后,Instagram推出了越来越多的年龄验证功能,以及将年轻用户与成年用户区分开来的方法。目前,在青少年试图修改自己的出生日期,显示自己年满18岁时Inst

用Python下载壁纸并自动更换桌面用Python下载壁纸并自动更换桌面Apr 10, 2023 pm 03:01 PM

壁纸 API我们这里使用一个开源在 GitHub 上的必应壁纸 API 作为壁纸的来源​https://github.com/zenghongtu/bing-wallpaper从 readme 当中我们可以知道,在 web 应用中我只需要使用如下引用即可<img src="https://bingw.jasonzeng.dev/?w=800"/>实在是太方便了接口使用下面我们来看下该 API 的具体调用规则1、传入 resolution 参数可以指

七 个超酷的 AI 工具值得一试七 个超酷的 AI 工具值得一试Apr 12, 2023 pm 01:10 PM

我们非常接近 2023 年,我们都希望在新的一年里基于 AI 的工具会出现爆炸式增长,这是有充分理由的。如果像我一样,你是这些技术的忠实粉丝,以及它们如何将我们的生产力提高 10 倍,你可以在这篇文章中找到该领域的 7 种工具列表。​您知道吗,您可以在DoTenX上免费实施带有或不带有编码的网络应用程序、API、网站或登录页面?请务必检查一下,甚至提名您的作品进行展示。DoTenX 是开源的,您可以在此处找到存储库:github.com/dotenx/dotenx。现在,让我们来看看我们的列表。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools