{"id":18951,"date":"2026-09-08T10:35:11","date_gmt":"2026-09-08T08:35:11","guid":{"rendered":"https:\/\/www.beseit.net\/?p=18951"},"modified":"2026-09-08T10:35:57","modified_gmt":"2026-09-08T08:35:57","slug":"automatitzacio-de-copies-de-seguretat-mysql-al-synology-backup_beseit-sh","status":"publish","type":"post","link":"https:\/\/www.beseit.net\/?p=18951","title":{"rendered":"Automatitzaci\u00f3 de c\u00f2pies de seguretat MySQL al Synology: backup_beseit.sh"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">A<strong>Nom de l&#8217;script:<\/strong><br><code>backup_beseit.sh<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Qu\u00e8 fa:<\/strong><br>Aquest script de Bash automatitza la c\u00f2pia de seguretat (backup) de cinc bases de dades MySQL concretes: <code>beseit<\/code>, <code>eng<\/code>, <code>eng_gram<\/code>, <code>bank<\/code> i <code>encara_una_mes<\/code>.<br>Per a cada base de dades, genera un fitxer <code>.sql<\/code> independent amb un segell de data i hora al nom (per exemple: <code>beseit_2026-09-08_10-00.sql<\/code>), evitant aix\u00ed la sobreescriptura de c\u00f2pies anteriors. Els fitxers es desen a la carpeta <code>\/volume2\/MySQL_backup\/MySQL_beseit<\/code>.<br>L&#8217;script inclou comprovacions de seguretat pr\u00e8vies: verifica que la carpeta de dest\u00ed existeix i comprova la disponibilitat de cada base de dades abans d&#8217;intentar-ne la c\u00f2pia, garantint un proc\u00e9s robust i sense interrupcions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>On est\u00e0 ubicat:<\/strong><br>Al sistema de fitxers del servidor NAS Synology, concretament a la ruta:<br><code>\/usr\/local\/bin\/backup_beseit.sh<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Com es llan\u00e7a:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Manualment (via terminal\/SSH):<\/strong><br>Connectant-se al Synology i executant:<br><code>sudo \/usr\/local\/bin\/backup_beseit.sh<\/code><\/li>\n\n\n\n<li><strong>Autom\u00e0ticament:<\/strong><br>Configurada com una tasca programada al <strong>Planificador de tasques<\/strong> del Panell de Control del DSM (Synology), executant-se amb privilegis d&#8217;usuari <code>root<\/code> a la data i hora programades, independentment de si l&#8217;ordinador personal est\u00e0 enc\u00e8s o apagat.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Visualitzar.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entrar al synology: Miquel@Miquel-PC:~$ ssh usuari<a href=\"mailto:urqtejmi@192.168.1.41\">@192.168.1.41<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">llistar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">urqtejmi@synology_vall:~$ sudo cat \/usr\/local\/bin\/backup_beseit.sh<br>Password:<br>Sorry, try again.<br>Password:<br>#!\/bin\/bash<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">sudo chmod +x \/usr\/local\/bin\/backup_polidic.sh<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">sudo cp \/volume2\/web\/backup_polidic.sh \/usr\/local\/bin\/<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">sudo chmod +x \/usr\/local\/bin\/backup_polidic.sh \/\/executa<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">sudo sed -i &#8216;s\/\\r$\/\/&#8217; \/usr\/local\/bin\/backup_polidic.sh &#8211;&gt; ELIMINA ELS RETORN DE CARRO<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">sudo chmod +x \/usr\/local\/bin\/backup_polidic.sh &#8211;&gt; COMPROVA QUE SEGUEIX SENT EXECUTABLE<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">#!\/bin\/bash<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Llista de bases de dades a copiar<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">DB_LIST=(\u00abbeseit\u00bb \u00abeng\u00bb \u00abeng_gram\u00bb \u00abbank\u00bb \u00abencara_una_mes\u00bb)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DB_USER=<br>DB_PASS=<br>BACKUP_DIR=\u00bb\/volume2\/MySQL_backup\/MySQL_beseit\u00bb<br>DATE=$(date +\u00bb%Y-%m-%d_%H-%M\u00bb)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Comprovar que la carpeta existeix<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">if [ ! -d \u00ab$BACKUP_DIR\u00bb ]; then<br>echo \u00abERROR: El directori $BACKUP_DIR no existeix.\u00bb<br>exit 1<br>fi<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Bucle per cada base de dades<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">for DB_NAME in \u00ab${DB_LIST[@]}\u00bb; do<br>FILE=\u00bb$BACKUP_DIR\/${DB_NAME}_$DATE.sql\u00bb<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo \"Fent backup de la base de dades: $DB_NAME...\"\n\n# Comprovar si la base de dades existeix\nif ! mysql -u\"$DB_USER\" -p\"$DB_PASS\" -e \"USE $DB_NAME\" 2>\/dev\/null; then\n    echo \"\u26a0  La base de dades $DB_NAME NO existeix. Saltant...\"\n    continue\nfi\n\n# Fer el backup\nmysqldump -u\"$DB_USER\" -p\"$DB_PASS\" \"$DB_NAME\" > \"$FILE\"\n\nif [ $? -eq 0 ]; then\n    echo \"Backup complet: $FILE\"\nelse\n    echo \"\u274c ERROR durant el backup de $DB_NAME\"\nfi<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">done<br>urqtejmi@synology_vall:~$<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ANom de l&#8217;script:backup_beseit.sh Qu\u00e8 fa:Aquest script de Bash automatitza la c\u00f2pia de seguretat (backup) de cinc bases de dades MySQL concretes: beseit, eng, eng_gram, bank i encara_una_mes.Per a cada base de dades, genera un fitxer .sql independent amb un segell &hellip; <a href=\"https:\/\/www.beseit.net\/?p=18951\">Continua llegint <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":3167,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-18951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloc-de-notes"],"_links":{"self":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/18951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18951"}],"version-history":[{"count":1,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/18951\/revisions"}],"predecessor-version":[{"id":18952,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/posts\/18951\/revisions\/18952"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=\/wp\/v2\/media\/3167"}],"wp:attachment":[{"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beseit.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}