Aide copier / coller www pour héberger des sites WordPresss

Tags: #<Tag:0x00007fe4caa37da0>

Bonjour, merci pour vos conseils,

dans www, j’ai installé LAMP et je ne sais pas trop quoi d’autres Nginx, par contre l’outil rsync fonctionne 3 secondes et se coupe, je ne parviens pas à faire un script qui fonctionne, tous, ouverts dans le terminal se coupent et ne suivent pas les indications du script. Comment faire pour lancer un script et voir son avancée de manière graphique ?

quel programme est censé lire le script .sh ? Merci d’avance pour vos conseils !

Exécute ton script avec l’option -X si c’est un script bash, depuis ton terminal.

Merci!! effectivement c’est différent: mot de passe demandé, etc, par contre le soucis est idem: le script ne fait pas les ordres demandés coimme l’impression echo, et la mise en boucle, pourquoi donc ? où est l’erreur ? Merci mille fois -X

Donnes nous ton script pour qu’on puisse te dire ce qui ne va pas, ce serait un commencement.

oui, il faut le script !! :

while ! rsync -avzP --append-verify root@149.202.48.238:/var/www/ /var/www/; do
echo « Rsync interrompu, nouvelle tentative dans 60s… »
sleep 60
done

pardon de pas y avoir pensé, merci

j’y connais pas grand chose, je demande à claude ai. Je ne suis pas capable d’écrire un script tel.

pourquoi faire un script de ce type?
C’est inutile.
Déjà il te manque #!/bin/bash au début du script.
Si tu ne sais pas faire de script, ne fait pas de script.
déjà est-ce que ta commande rsync fonctionne toute seule?
ton accès root@149.202.48.238 n’a que peu de change de marcher étant donné qu’en standard root n’a pas la permission de se connecter à distance (et heureusement, il ne faut jamais laisser un accès root sur internet)

Je demande à l’IA de faire un script pour essayer (et apprendre donc) à utiliser Debian, si je ne fais pas de script c’est sûr que j’apprendrais jamais, je n’ai pas trouvé de livres et j’aime bien utiliser l’ia. la fonction rsync fonctionne toute seule, mais se bloque assez rapidement, au lieu de recommencer. pour root je peux ajouter un utilisateur. merci.

Achète un livre sinon pour apprendre à faire des script. Tu ne pourras jamais apprendre correctement en partant de zéro avec une IA; car la pertinence de sa réponse est proportionnelle (à minima) à celle de ta question.
Si tu n’y connais rien, tu ne peux pas poser de question correctement.

l’ia fait pas tout, c’est quand même un bon outil: si je ne comprends pas tel aspect, je lui demande, pour moi c’est complémentaire à un apprentissage livre. Mais quand il fait faux il ne l’avoue pas c’est son tort. j’ai besoin d’un script, donc pour moi c’est démesuré d’apprendre à tout connaître quant au script.
en corrigeant le script et le relançant il a le même comportement débute rapide puis ralenti, puis s’arrête.

Tu utilise quoi comme IA ?

Car sans aucune modification sur OpenAI il me propose directement ça pour corriger :

#!/bin/bash

REMOTE_USER="root"
REMOTE_HOST="149.202.48.238"
REMOTE_PATH="/var/www/"
LOCAL_PATH="/var/www/"
LOG_FILE="/var/log/rsync_sync.log"
ERROR_THRESHOLD=5
SLEEP_TIME=60
MAIL_DEST="admin@tondomaine.com"

fail_count=0

echo "$(date "+%F %T") - Démarrage du script Rsync" >> "$LOG_FILE"

while true; do
    rsync -avzP --append-verify "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}" "${LOCAL_PATH}" >> "$LOG_FILE" 2>&1
    if [ $? -eq 0 ]; then
        echo "$(date "+%F %T") - Synchronisation réussie." >> "$LOG_FILE"
        break
    else
        echo "$(date "+%F %T") - Rsync échoué. Nouvelle tentative dans ${SLEEP_TIME}s…" >> "$LOG_FILE"
        ((fail_count++))
        if [ "$fail_count" -ge "$ERROR_THRESHOLD" ]; then
            echo "$(date "+%F %T") - Échec répété (${fail_count} fois), envoi d'une alerte mail." >> "$LOG_FILE"
            echo "Échec Rsync détecté sur $(hostname) vers ${REMOTE_HOST}. Voir le log: ${LOG_FILE}" | \
                mail -s "ALERTE RSYNC $(hostname)" "$MAIL_DEST"
            fail_count=0  # Réinitialiser le compteur après alerte
        fi
        sleep "$SLEEP_TIME"
    fi
done

Par contre je ne comprends pas ce que tu cherches à faire il y a sans doute bien plus pratique/pertinent à te recommander.

1 J'aime

j’ai essayé claude, merci, je vais essayer ton script

je voulais juste voir si j’arrivais à héberger depuis le domicile des sites Wordpress, par curiosité et pour mieux connaître le serveur.

[1] 33429
bash: d : commande introuvable

j’ai cette erreur à ton script. Je vais voir ce qu’est donc.

rsync n’est pas le bon outil pour faire ça.
Normalement sur wordpress, tu dois avoir un SFTP ou autre du même genre pour transferer sur le serveur d’hébergement le code modifié.

:thinking:

Il peux très bien faire des rsync de son répertoires vers un serveur dédié ou mutualisé … si il souhaitent entretenir un espace de développement et/ou de recette, il peux très envisager de pousser alors la version à jour vers le serveur de production :wink:

je rajouterai que je fais bien comme ça pour mes appliweb perso avec en plus une étape Ansistrano pour me permettre de rollback rapidement je pousse mes versions et fais un simple lien vers un dossier current qui sera servi par le serveur web.

oui mais rsync n’est pas très sécurisé par rapport à un SFTP.
Je ne connais pas Wordpress de près, mais je pense qu’ils fournissent un accès SFTP pour mettre à jour.

Après on s’étonne des cyberattaques :slight_smile:

Mais bien entendu :

-e, --rsh=COMMAND
              This option allows you to choose an alternative remote shell program to use for communication between the local and remote copies of rsync. Typically, rsync is config‐
              ured to use ssh by default, but you may prefer to use rsh on a local network.

              If this option is used with [user@]host::module/path, then the remote shell COMMAND will be used to run an rsync daemon on the remote host, and all data will be trans‐
              mitted through that remote shell connection, rather than through a direct socket connection to a running rsync daemon on the  remote  host.   See  the  section  "USING
              RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION" above.

              Command-line  arguments  are permitted in COMMAND provided that COMMAND is presented to rsync as a single argument.  You must use spaces (not tabs or other whitespace)
              to separate the command and args from each other, and you can use single- and/or double-quotes to preserve spaces in an argument (but not backslashes).  Note that dou‐
              bling a single-quote inside a single-quoted string gives you a single-quote; likewise for double-quotes (though you need to pay attention to which quotes your shell is
              parsing and which quotes rsync is parsing).  Some examples:

                  -e 'ssh -p 2234'
                  -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1 %h %p"'

              (Note that ssh users can alternately customize site-specific connect options in their .ssh/config file.)

              You can also choose the remote shell program using the RSYNC_RSH environment variable, which accepts the same range of values as -e.

              See also the --blocking-io option which is affected by this option.

CF man de rsync :innocent: je ne dit rien sur l’échange de clé avant histoire d’éviter le mot de passe

:sweat_smile: sauf que la commande se balade en clair :slight_smile:
dans tous les manuels de sécu, rsync est déconseillé :slight_smile: ; y compris sur un réseau local parfois. Quitte à utiliser rsync sur internet, autant faire un tunnel ssh avant.

Pourquoi avoir installé Nginx, si vous avez Apache d’installé ?

Rien ne vous empêche de travailler en locale avant de passer à une prise à distance sécurisée via SFTP ou SSH.

L’interpréteur dash (man sh), l’interpréteur bash (celui utilisé par défaut ou le plus utilisé sous Debian) et d’autres encore.

Il faut avant tout vous assurer que vous disposez bien des bons droits sur le fichier à l’aide de la commande ls -x mon_script. Une commande chmod +x mon_script permet de rendre exécutable le fichier mon_script.
Pour lancer un script, il existe différentes méthodes dont notamment:

  • nom de l’interpréteur de commande suivi du nom du script
  • utilisation de shebang en tant que première ligne du script et lancement du script par ./nom_du_script

Exemple de script avec le shebang:
#!/bin/bash
echo « Hello ! »
echo $(date) >> logs_script.log #affiche la date de lancement du script dans le fichier logs_script.log.

Dans un script on emploie généralement la commande echo pour afficher dans un terminal ou rediriger dans un fichier des informations.

Pour le transfert de fichiers, un serveur SFTP fait parfaitement l’affaire et quasiment tous les hébergeurs offrent ce type de service.

On peut aussi faire appel à SSH et sa commande scp pour le transfert sécurisé de fichiers à distance mais ce service peut être optionnel chez les hébergeurs ou nécessiter un serveur dédié.

En matière d’apprentissage et si vous n’êtes pas fâché avec la langue de Shakespeare, je vous invite à vous rendre sur la page https://www.gnu.org/software/bash/manual/ ou vous trouverez le manuel d’utilisation de bash sous différents formats.
En ce qui concerne l’utilisation d’une AI, c’est complémentaire aux ouvrages qui sont limités en taille et donc en nombre d’exemples et d’explications, mais la qualité des réponses des AI est comme ici limitée à la qualité de l’expression de vos besoins. Pour l’apprentissage de bash, je vous invite à faire appel à l’AI uniquement lorsque vous rencontrez un problème de compréhension dans le manuel mis en lien plus haut ou lorsque vous souhaitez obtenir immédiatement plus d’exemples ou d’explications détaillées sur un script. Vous pouvez aussi demander à l’AI qu’il vous génère des exercices avec leurs corrigés en relation avec votre progression d’apprentissage.

1 J'aime

Quel commande en clair :thinking:

Tu as pris le temps de lire ce que j’ai fourni ?

Merci pour toutes ces infos, de mon côté j’ai cela:

Pour sécuriser un rsync avec un tunnel SSH, vous avez plusieurs options :

Méthode 1 : rsync via SSH directement (recommandée)

La façon la plus simple est d’utiliser rsync avec SSH intégré :

rsync -avz -e ssh user@serveur-distant:/chemin/source/ /chemin/destination/

L’option -e ssh indique à rsync d’utiliser SSH comme transport. Vous pouvez aussi spécifier des options SSH :

rsync -avz -e "ssh -p 2222 -i ~/.ssh/ma_cle" user@serveur:/source/ /destination/

Méthode 2 : Tunnel SSH manuel

Si vous voulez créer un tunnel SSH explicite :

  1. Créer le tunnel :
ssh -L 8873:localhost:873 user@serveur-distant

Cela redirige le port local 8873 vers le port 873 (rsync) du serveur distant.

  1. Utiliser rsync via le tunnel (dans un autre terminal) :
rsync -avz rsync://localhost:8873/module/ /destination/

Méthode 3 : Avec compression et options avancées

Pour optimiser les transferts sur des connexions lentes :

rsync -avz --compress --partial --progress -e "ssh -C" user@serveur:/source/ /destination/

Options utiles :

  • --compress : compression des données
  • --partial : reprend les transferts interrompus
  • --progress : affiche la progression
  • -C dans SSH : compression SSH

Sécurité supplémentaire

  • Utilisez des clés SSH plutôt que des mots de passe
  • Configurez SSH pour désactiver l’authentification par mot de passe
  • Limitez les utilisateurs autorisés avec AllowUsers dans /etc/ssh/sshd_config

La première méthode est généralement la plus pratique car rsync gère automatiquement la connexion SSH.