Vraag Hoe rsync te gebruiken via FTP


Elke unix:

Ik heb de volgende cmd-regel die goed werkt.

rsync -avr -e ssh /home/dir user@example.com:/home/

Maar ik moet het nu instellen om rsync naar een externe server die alleen een FTP-server heeft. Hoe pak ik dat aan?

Ik keek naar de rsync-help maar raakte snel kwijt (ik doe dit niet vaak).


175
2018-06-12 09:51


oorsprong


Dit is vergelijkbaar met vragen over het gebruik van HTTP via IRC, of ​​over het gebruik van FTP via SMTP ... - Juliano
Misschien zou je een deel van je redenering kunnen uitleggen om dit te willen doen, dan kunnen we je helpen een haalbare oplossing te bedenken. - James
in wezen probeerde ik een back-up te automatiseren van een shared hosting-server en begreep ik niet hoe rsync werkte. ik ben nu naar een vps verhuisd en heb de beperking van ftp niet meer - bumperbox
Dupliciteit is jouw god: scie.nti.st/2013/4/13/... - user956584
Als deployment is waar je aan denkt, en je vindt NodeJS niet erg, kijk eens dploy, lui en werkt goed met git - Frank Nocke


antwoorden:


Jij niet. rsync kan dat niet voor u doen, het is een protocol op zichzelf en werkt niet via FTP.

U wilt echter misschien proberen csync. IIRC het biedt rsync-achtig gedrag via HTTP. Ik kan niet zeggen of het werkt via FTP, je zult het moeten proberen.


76
2018-06-12 10:00



Kijken naar de csync webpagina, het ondersteunt sftp maar er is geen melding gemaakt van ondersteuning voor plain ftp. - Keith Thompson


rsync gaat niet voor u werken vanwege de redenen die anderen hebben genoemd. Echter, lftp en ncftp beide hebben "spiegel" -modi die waarschijnlijk aan uw behoeften zullen voldoen.

Ik gebruik dit om dingen uit mijn lokale map naar een ftp- of sftp-webhost te pushen:

lftp -c "set ftp:list-options -a;
open ftp://user:password@your.ftp.com; 
lcd ./web;
cd /web/public_html;
mirror --reverse --delete --use-cache --verbose --allow-chown  
--allow-suid --no-umask --parallel=2 --exclude-glob .svn"

156
2018-06-12 14:58



lftp is erg leuk. een andere waar ik zojuist achter ben gekomen is wput met ingebouwde bandbreedtebeperking. - karmakaze


Zoals geschreven door ezel, lftp is een goede tool.

Ik raad u aan het script te parametreren en gebruik te maken van de

exclude-glob

opties, die bestandsnamen uitsluit met behulp van de glob-functie (* ,? ..) van uw shell:

#!/bin/bash    
HOST="your.ftp.host.dom"
USER="username"
PASS="password"
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/path/of/your/local/dir"
RCD="/path/of/your/remote/dir"
#DELETE="--delete"
lftp -c "set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
cd $RCD;
mirror --reverse \
       $DELETE \
       --verbose \
       --exclude-glob a-dir-to-exclude/ \
       --exclude-glob a-file-to-exclude \
       --exclude-glob a-file-group-to-exclude* \
       --exclude-glob other-files-to-exclude"

Waarschuwing: zorg ervoor dat de doelmap bestaat, anders mislukt het cd-commando, dus de bewerking inclusief het verwijderen van bomen van bestanden  zal plaatsvinden in de verkeerde map (root)!

Ik heb het script zo bijgewerkt --delete optie is uitgeschakeld door defaut, schakel het in door het commentaar weg te halen DELETE= command.


118
2018-01-26 11:58



Hielp me een geweldige stelletje. Maar ik moest de "set ftp: list-options -a;" verwijderen die dingen verpesten. - mat
Is er zoiets dat hetzelfde doet over SFTP (FTPS?)? - trusktr
Ik zou dit eerder doen cd $RCD, om te voorkomen dat a-script-met-een-typfout per ongeluk bestanden uit de verkeerde map verwijdert: set cmd:fail-exit yes. (Het lijkt lftp merkt niet dat het daadwerkelijk is verlaten, totdat je de volgende opdracht geeft.) - En daarvoor cd $LCD Ik zou dit doen (in de lokale shell, dat wil zeggen, bovenaan de scrip): set -eu. - KajMagnus
De eerste keer dat ik mijn script uitvoer, had ik de externe map nog niet gemaakt, dus het script kon niet worden opgenomen in die niet-bestaande map. Toen begon het script mirror, en daarom --delete: d bestanden van de verkeerde map. (Maar ik heb ze opnieuw gekopieerd, dus in dat geval deed het er niet toe, misschien is het voor iemand anders van belang.) - KajMagnus
Naast het advies van @KajMagnus over het gebruik van 'set -eu' en 'cd $ LCD', voeg je 'mkdir -p $ LCD' toe vóór 'cd $ LCD' - op die manier kun je er zeker van zijn dat de map bestaat en jij ' doe mee. - Paul Gear


Afhankelijk van wat je eigenlijk probeert te doen, kan een andere compleet andere benadering gebruik zijn curlftps om een ​​ftp-map te koppelen, en dan misschien rsync de twee "lokale" mappen.

De installatie is anders, afhankelijk van je distro, dus daar kan ik niet over generaliseren, maar je moet het installerenfuse en curlftpfs (prolly Debian al fuse standaard installeren) en vervolgens:

  1. sudo apt-get install curlftpfs

  2. Zorg ervoor dat de fuse module is geladen (modprobe fuse)

  3. sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other

Merk op dat er na de laatste komma geen spatie is (het is geen typfout!). Ben je daar tevreden mee of wil je dat niet elke keer doen, dan kun je het toevoegen aan je fstab (meestal in /etc/fstab):

curlftpfs#user:password@ftp.yourserver.com /path/to/ftp/folder/ fuse auto,user,uid=1000,allow_other 0 0

In dat geval moet u ervoor zorgen dat de zekeringmodule eerder is geladen.

Houd echter rekening met twee dingen:

  • Dat de ontwikkelaar het project een of twee jaar geleden heeft laten vallen, dus ik weet voorlopig niet hoe bruikbaar / stabiel het is.
  • Als het wachtwoord een vreemd karakter bevat curlftpfs kan falen (misschien kunt u iets doen met de .netrc).

23
2017-12-11 12:39



FTP Fuse en rsync staan ​​het dichtst bij de vraag, maar zijn duidelijk krankzinnig op alles behalve een kleine set van kleine bestanden. - Steve-o
Waarom zou het gek zijn? Standaard rsync stat () s, vergelijkt het de inhoud niet. Dat kan gedaan worden door ls -l met een ftp-client. - ptman
Ik heb dit eigenlijk geprobeerd (via rsnapshot) en het werkte niet, elk bestand werd geretourneerd en de fout liet zien dat rsync geen koppeling kon maken. Dus het gebruik van lftp in combinatie met rsnapshot heeft de truc gedaan - Konstantin Pereiaslov
Flawless op 14.04 LTS; een extra tip: wanneer u klaar bent om uw FTP-site te ontkoppelen, gebruikt u gewoon umount DIR waar DIR was jouw /path/to/ftp/folder bovenstaande. - Joe
2017, en dit werkt nog steeds! Eerlijk gezegd de gemakkelijkste manier om bestanden van een enzyse FTP-site te kopiëren. Plaats lokaal en rsync alsof het lokaal is - td512


Er bestaat weex...

Weex is een hulpprogramma ontworpen om   automatiseer de taak van op afstand   onderhouden van een webpagina of andere FTP   archief. Het zal een reeks synchroniseren   lokale bestanden naar een externe server van   uitvoeren van uploads en verwijderen op afstand   zoals gevraagd.


15
2017-08-17 14:38



Werkt als charme! Je draait het zo: $ weex yourFTPconfigName Hier is handleiding linuxcertif.com/man/1/weex - sobi3ch


rsync werkt niet via ftp. Aan de andere kant heeft het de rsync daemon of een shell nodig die rsync kan aanroepen. Ftp staat je in het algemeen toe om een ​​paar commando's te bellen en rsync is daar niet een van. Er zijn andere hulpmiddelen bedoeld voor het automatiseren van ftp-taken zoals "lftp".


9
2018-06-12 10:03





Dit lijkt een goede en vrije pasvorm: https://savannah.gnu.org/projects/ftpsync/


8
2018-06-12 15:02



Gezien de stomende stapel van Don niet-touch-with-a-ten-foot-pole SourceForge is de laatste tijd geworden, misschien moet je de link naar de update bijwerken project webpagina. - HopelessN00b


Voor wat het lijkt dat u probeert te doen, kunt u ook wget gebruiken.

wget -m ftp: // gebruikersnaam: password@domain.com


6
2018-02-25 18:12



Dat zal slechts een spiegel van de site vormen. U kunt dit niet gebruiken om uw wijzigingen te uploaden. - David V.