下面是QT代码中的一部分,有一些小的问题查不到,跪求大佬们回答
不明白的地方都在语句的后面打了问号,名且标号了数字
具体问题在程序后面
目的: 能够起到备份的作用,备份之后的文件是变成压缩包
同时还能加密, 加密的时候还能生成一个文件
// button backup
void Vsbak::on_pushButton_clicked(){ // ?1
// The QDateTime class provides date and time functions.
// 调用QDatetime里面的一个函数,赋给另一个QDatetime的类型
QDateTime current_date_time = QDateTime::currentDateTime();
// 初始化三个String类型
QString targz, cmd_find, cmd_tar;
//RadioButton presents an option button that can be toggled on (checked) or off (unchecked).
//Radio buttons are typically used to select one option from a set of options.
//Use isChecked() to see if a particular button is selected.
if(ui->radioButton->isChecked()){ // 如果radiobutton 被选择了,那么就进行备份,如果没有就只输出时间
// Linux find命令用来在指定目录下查找文件。
// 将目前目录其其下子目录中所有一般文件列出 # find . -type f
// Linux grep 命令用于查找文件里符合条件的字符串。
// -v 或 --revert-match : 显示不包含匹配文本的所有行。
// 反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
//
cmd_find = "find ./ -type f | grep -v \'Permission denied\' > TEPLIST";// 这个功能是什么呢// ?2
targz = current_date_time.toString("yyyy-MM-dd_hh.mm.ss") + ".full.tar.gz";
}else{
// 会替换掉前面的百分之1,替换规则是从小到大
int minDiff = get_min(current_date_time); // 为什么我可以从Current_date_time里面获得一个最小的时间 //?3
cmd_find = QString("find ./ -mmin -%1 -type f | grep -v \'Permission denied\' > TEPLIST").arg(minDiff);
targz = current_date_time.toString("yyyy-MM-dd_hh.mm.ss") + ".inc.tar.gz";
}
// exclude from 是一个配置目录
// tar命令
//-v或--verbose 显示指令执行过程
// --totals 备份文件建立后,列出文件大小
//
cmd_tar = QString("tar --verbose --totals --exclude-vcs %1 --files-from=TEPLIST -czf %2/%3").arg(exclude_from).arg(dir_dest).arg(targz);//?4 尤其是后面的exclude--cs 之后,不知道为什么要这样做
qDebug()<< cmd_find << endl << cmd_tar<< endl;// 这里的作用是什么呢,这个<< 在C语言中的作用是什么呢 //?5
QStringList cmd_pipe;// 初始化了一个String目录
cmd_pipe << "-c" << cmd_find; // 说明这个cmd-pipe已经变成了一个linux的cmd命令了
cmd->start("/bin/bash",cmd_pipe); // 开始一个程序
cmd->waitForFinished();
cmd->close();
cmd->start(cmd_tar);// cmd_tar 也变成了一个程序
cmd->waitForFinished();
cmd->close();
cmd->start("rm -f TEPLIST");//?6 这里命令的目的是什么呢?
cmd->waitForFinished();
/*********** Encrypting************* // ?7 这里的gpg是个什么样的命令
if(ui->checkBox->isChecked()){
QString cmd_enc;
QString cmd_isKey = "gpg -k " + gpg_key;
cmd->start(cmd_isKey);
cmd->waitForFinished();
QString out = QString::fromLocal8Bit(cmd->readAllStandardOutput());
if(out.isEmpty())
cmd_enc = QString("gpg -c -o %1/%2.gpg %1/%2").arg(dir_dest).arg(targz);
else
cmd_enc = QString("gpg -e -r %1 -o %2/%3.gpg %2/%3").arg(gpg_key).arg(dir_dest).arg(targz);
cmd->start(cmd_enc);
cmd->waitForFinished();
if(false == ui->checkBox_2->isChecked()){
QString cmd_rm = QString("rm %1/%2.gpg").arg(dir_dest).arg(targz);
cmd->start(cmd_rm);
cmd->waitForFinished();
}
if(false == ui->checkBox_3->isChecked()){
QString cmd_rm = QString("rm %1/%2").arg(dir_dest).arg(targz);
cmd->start(cmd_rm);
cmd->waitForFinished();
}
}
- 这一部分要实现的功能到底是个啥,之所以不明白也是因为里面的一些代码不清楚
- cmd_find = "find ./ -type f | grep -v \'Permission denied\' > TEPLIST";// 这个功能是什么呢,主要是./ 和 后面的 > TEPLIST 看不懂,不知道究竟要干什么
- 为什么要用getmin呢? int minDiff = get_min(current_date_time); // 为什么我可以从Current_date_time里面获得一个最小的时间 //?3
- cmd_tar = QString("tar --verbose --totals --exclude-vcs %1 --files-from=TEPLIST -czf %2/%3").arg(exclude_from).arg(dir_dest).arg(targz);//?4 尤其是后面的exclude--cs 之后,不知道巍峨什么要这样做
- qDebug()<< cmd_find << endl << cmd_tar<< endl;// 这里的作用是什么呢,这个<< 在C语言中的作用是什么呢 //?5
- cmd->start("rm -f TEPLIST");//?6 这里命令的目的是什么呢?
- ?7 这里的gpg是个什么样的命令