db-backup.php 990 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/usr/bin/env php
  2. <?php
  3. declare(strict_types=1);
  4. require __DIR__ . '/_cli.php';
  5. performRequirementCheck(FreshRSS_Context::systemConf()->db['type'] ?? '');
  6. $ok = true;
  7. $cliOptions = new class extends CliOptionsParser {
  8. public bool $quiet;
  9. public function __construct() {
  10. $this->addOption('quiet', (new CliOption('quiet', 'q'))->withValueNone());
  11. parent::__construct();
  12. }
  13. };
  14. if (!empty($cliOptions->errors)) {
  15. fail('FreshRSS error: ' . array_shift($cliOptions->errors) . "\n" . $cliOptions->usage);
  16. }
  17. foreach (listUsers() as $username) {
  18. $username = cliInitUser($username);
  19. $filename = DATA_PATH . '/users/' . $username . '/backup.sqlite';
  20. @unlink($filename);
  21. $verbose = !$cliOptions->quiet;
  22. if ($verbose) {
  23. echo 'FreshRSS backup database to SQLite for user “', $username, "”…\n";
  24. }
  25. $databaseDAO = FreshRSS_Factory::createDatabaseDAO($username);
  26. $ok &= $databaseDAO->dbCopy($filename, FreshRSS_DatabaseDAO::SQLITE_EXPORT, false, $verbose);
  27. }
  28. done((bool)$ok);