Comment sauvegarder uniquement la base de données (sans les uploads) depuis la console ?

Existe-t-il un moyen de sauvegarder uniquement la base de données depuis la console ?

./launcher enter app
discourse backup

échoue lors de la tentative d’inclusion des fichiers uploadés :

...
Reprise de sidekiq...
Finalisation de la sauvegarde...
Création de l'archive : mysite-2020-02-24-183504-v20200203061927.tar.gz
Vérification que l'archive n'existe pas déjà...
Création d'une archive vide...
Archivage du dump de données...
Archivage des fichiers uploadés...
EXCEPTION : lib/discourse.rb:57:in `exec' : Échec de l'archivage des fichiers uploadés.
tar : /var/www/discourse/public/backups/default/mysite-2020-02-24-183504-v20200203061927.tar : 2048 octets écrits sur 10240
...

Pas sûr… @gerhard ou @vinothkannans, des idées ?

Oui, vous pouvez effectuer une sauvegarde uniquement de la base de données depuis la console Rails avec les commandes ci-dessous.

./launcher enter app
rails c
> BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false)

Hmm, cela n’a pas produit le fichier de sauvegarde. La sauvegarde manuelle fonctionne comme prévu, cependant.

Y a-t-il des journaux que je devrais examiner ?

Sortie de la commande :

[1] pry(main)> BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false)
=> #<BackupRestore::Backuper:0x0000562961f73998
 @archive_basename="/var/www/discourse/public/backups/default/mysite-2020-02-25-140934-v20200203061927",
 @archive_directory="/var/www/discourse/public/backups/default",
 @backup_filename="mysite-2020-02-25-140934-v20200203061927.sql.gz",
 @client_id=nil,
 @current_db="default",
 @dump_filename="/var/www/discourse/tmp/backups/default/2020-02-25-140934/dump.sql.gz",
 @filename_override=nil,
 @logs=[],
 @publish_to_message_bus=false,
 @readonly_mode_was_enabled=true,
 @store=#<BackupRestore::LocalBackupStore:0x0000562961f74938 @base_directory="/var/www/discourse/public/backups/default">
 @success=false,
 @timestamp="2020-02-25-140934",
 @tmp_directory="/var/www/discourse/tmp/backups/default/2020-02-25-140934",
 @user=
  #<User:0x0000562961f70c48
   id: -1,
   username: "system",
   created_at: Wed, 16 Jul 2014 08:22:15 UTC +00:00,
   updated_at: Mon, 24 Feb 2020 23:41:26 UTC +00:00,
   name: "system",
   seen_notification_id: 0,
   last_posted_at: Thu, 13 Feb 2020 05:29:57 UTC +00:00,
   password_hash: [FILTERED],
   salt: "5a5b04e52bc687549aeb1fc8c7537af6",
   active: true,
   username_lower: "system",
   last_seen_at: nil,
   admin: true,
   last_emailed_at: nil,
   trust_level: 4,
   approved: true,
   approved_by_id: nil,
   approved_at: nil,
   previous_visit_at: nil,
   suspended_at: nil,
   suspended_till: nil,
   date_of_birth: nil,
   views: 0,
   flag_level: 0,
   ip_address: nil,
   moderator: true,
   title: nil,
   uploaded_avatar_id: 1,
   locale: nil,
   primary_group_id: nil,
   registration_ip_address: nil,
   staged: false,
   first_seen_at: nil,
   silenced_till: nil,
   group_locked_trust_level: nil,
   manual_locked_trust_level: 4,
   secure_identifier: nil>
 @user_id=-1,
 @with_uploads=false>

Ah, j’ai oublié d’ajouter .run à la fin. Cela devrait être BackupRestore::Backuper.new(Discourse.system_user.id, with_uploads: false).run

Je me suis intéressé au sujet et j’ai lu de nombreux fils de discussion. Ma conclusion est qu’il est même plus sûr de restaurer les copies directement depuis la console pour éviter les bugs – comment procéder correctement en général ?