Sådan synkroniserer du mapper med rsync uden sudo-fejl: En trin-for-trin guide

Hvordan kan en mappe på en lokal maskine synkroniseres med en mappe på en fjernmaskine, hvor fjernmappen kun kan manipuleres af root, og brugeren har en konto på fjernmaskinen, der kan bruge sudo, ved hjælp af rsync uden at få fejlen "sudo: no tty present and no askpass program specified"?

For at synkronisere en lokal mappe med en fjernmappe uden at få fejlen "sudo: no tty present and no askpass program specified", skal du oprette en SSH-nøgle, kopiere den til fjernmaskinen, bruge rsync med sudo og redigere sudoers-filen for at tillade rsync uden TTY.

Sådan synkroniseres en lokal mappe med en fjernmappe ved hjælp af rsync uden at få fejlen "sudo: no tty present and no askpass program specified"

For at synkronisere en lokal mappe med en fjernmappe, hvor fjernmappen kun kan manipuleres af root, og brugeren har en konto på fjernmaskinen, der kan bruge sudo, kan du følge disse trin:

  1. Opret en SSH-nøgle på din lokale maskine, hvis du ikke allerede har en:
    ssh-keygen -t rsa
  2. Kopier den offentlige nøgle til fjernmaskinen:
    ssh-copy-id user@remote_host
  3. Opret en rsync kommando, der bruger SSH til at forbinde til fjernmaskinen og sudo til at få root-adgang. Brug --rsync-path for at specificere, at rsync skal køres med sudo på fjernmaskinen:
    rsync -avz -e "ssh -i /path/to/private/key" /local/directory/ user@remote_host:/remote/directory/ --rsync-path="sudo rsync"
  4. Hvis du stadig får fejlen "sudo: no tty present and no askpass program specified", kan du konfigurere sudo til at tillade rsync-kommandoen uden at kræve en TTY. Rediger sudoers-filen på fjernmaskinen ved at køre:
    sudo visudo
    Tilføj følgende linje til sudoers-filen:
    user ALL=(ALL) NOPASSWD: /usr/bin/rsync
    Erstat user med dit brugernavn.
  5. Prøv at køre rsync-kommandoen igen:
    rsync -avz -e "ssh -i /path/to/private/key" /local/directory/ user@remote_host:/remote/directory/ --rsync-path="sudo rsync"

Ved at følge disse trin bør du kunne synkronisere en lokal mappe med en fjernmappe uden at få fejlen "sudo: no tty present and no askpass program specified".