Commit 0150a02b authored by platyhouse's avatar platyhouse

.

parent 6fa9c8f8
#!/usr/bin/php #!/usr/bin/php
<?php <?php
$password = $argv[3] ?? null;
$host = $argv[1] ?? null; // 인자 파싱 함수 (--key=value 형태만 허용)
$user = $argv[2] ?? null; function parseArguments($argv) {
$backupPath = $argv[4] ?? null; $args = [];
for ($i = 1; $i < count($argv); $i++) {
if ($argv[$i] === '--help') {
$args['help'] = true;
} elseif (preg_match('/^--([a-zA-Z]+)=(.*)$/', $argv[$i], $matches)) {
$args[$matches[1]] = $matches[2];
} else {
echo "[WARNING] Invalid argument format: {$argv[$i]}\n";
echo " Use --key=value format (e.g., --host=localhost)\n\n";
}
}
return $args;
}
$args = parseArguments($argv);
// --help 옵션 체크
if (isset($args['help'])) {
echo "pty_mysql_backup_all_each_db_each_table version 2.0\n";
echo "Copyright (C) 2019 by cpueblo, PlatyHouse Co.,LTD.\n";
echo "Web site: https://www.platyhouse.com/\n\n";
echo "Usage: php ./ptyMysqlBackup.php [OPTIONS]\n\n";
echo "Options:\n";
echo " --host=<hostname> MySQL host (default: localhost)\n";
echo " --username=<user> MySQL username (default: root)\n";
echo " --password=<password> MySQL password (optional if ~/.mysql_password exists)\n";
echo " --backupPath=<path> Backup directory path (default: /root/pty_server_backup/mysql)\n";
echo " --help Show this help message\n\n";
echo "Examples:\n";
echo " php ./ptyMysqlBackup.php --host=localhost --username=root --password=mypass\n";
echo " php ./ptyMysqlBackup.php --host=192.168.1.100 --username=admin\n";
echo " php ./ptyMysqlBackup.php --host=remotehost --backupPath=/backup/mysql\n\n";
echo "Note:\n";
echo " - You can create ~/.mysql_password file with password (local or remote host)\n";
echo " - If password is not provided, script will try to read from ~/.mysql_password\n";
echo " - Each database backup will be compressed to .tgz format\n";
exit(0);
}
$host = $args['host'] ?? null;
$user = $args['username'] ?? null;
$password = $args['password'] ?? null;
$backupPath = $args['backupPath'] ?? null;
if (!$host) $host = "localhost"; if (!$host) $host = "localhost";
if (!$user) $user = "root"; if (!$user) $user = "root";
...@@ -38,17 +80,26 @@ if (!$password) ...@@ -38,17 +80,26 @@ if (!$password)
if (!$password) if (!$password)
{ {
echo "pty_mysql_backup_all_each_db_each_table version 1.0\n"; echo "[ERROR] Password is required!\n\n";
echo "pty_mysql_backup_all_each_db_each_table version 2.0\n";
echo "Copyright (C) 2019 by cpueblo, PlatyHouse Co.,LTD.\n"; echo "Copyright (C) 2019 by cpueblo, PlatyHouse Co.,LTD.\n";
echo "Web site: https://www.platyhouse.com/\n\n"; echo "Web site: https://www.platyhouse.com/\n\n";
echo "Usage: php ./pty_mysql_backup_all_each_db_each_table.php <HOST> <USERNAME> <PASSWORD> [BACKUP_PATH]\n"; echo "Usage: php ./ptyMysqlBackup.php [OPTIONS]\n\n";
echo " HOST : MySQL host (default: localhost)\n"; echo "Options:\n";
echo " USERNAME : MySQL username (default: root)\n"; echo " --host=<hostname> MySQL host (default: localhost)\n";
echo " PASSWORD : MySQL password (optional if ~/.mysql_password exists)\n"; echo " --username=<user> MySQL username (default: root)\n";
echo " BACKUP_PATH : Backup directory path (default: /root/pty_server_backup/mysql)\n\n"; echo " --password=<password> MySQL password (optional if ~/.mysql_password exists)\n";
echo "Or create ~/.mysql_password file with password\n"; echo " --backupPath=<path> Backup directory path (default: /root/pty_server_backup/mysql)\n";
echo "Or create ~/.mysql_password file on the remote host\n"; echo " --help Show this help message\n\n";
exit; echo "Examples:\n";
echo " php ./ptyMysqlBackup.php --host=localhost --username=root --password=mypass\n";
echo " php ./ptyMysqlBackup.php --host=192.168.1.100 --username=admin\n";
echo " php ./ptyMysqlBackup.php --host=remotehost --backupPath=/backup/mysql\n\n";
echo "Note:\n";
echo " - You can create ~/.mysql_password file with password (local or remote host)\n";
echo " - If password is not provided, script will try to read from ~/.mysql_password\n";
echo " - Each database backup will be compressed to .tgz format\n";
exit(1);
} }
...@@ -113,6 +164,28 @@ while ($databaseInfo = mysqli_fetch_array($databases)) { // go through each row ...@@ -113,6 +164,28 @@ while ($databaseInfo = mysqli_fetch_array($databases)) { // go through each row
echo "Done\n"; echo "Done\n";
$totalTables++; $totalTables++;
} }
// 데이터베이스 백업 완료 후 압축
echo "[INFO] Compressing database backup...\n";
$dbDir = $backupPath . "/" . $dbName;
$tarFile = $backupPath . "/" . $dbName . ".tgz";
// tar 명령 실행 (백업 경로로 이동해서 실행)
$tarCmd = "cd \"$backupPath\" && tar czf \"$dbName.tgz\" \"$dbName\" 2>&1";
exec($tarCmd, $tarOutput, $tarReturnCode);
if ($tarReturnCode === 0) {
echo "[INFO] Compressed to: $tarFile\n";
// 압축 성공 시 원본 디렉토리 삭제
echo "[INFO] Removing original directory...\n";
$rmCmd = "rm -rf \"$dbDir\"";
exec($rmCmd);
echo "[INFO] Original directory removed\n";
} else {
echo "[ERROR] Failed to compress $dbName\n";
echo implode("\n", $tarOutput) . "\n";
}
} }
echo "\n====================================\n"; echo "\n====================================\n";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment