שאלה כיצד להשתמש rsync על FTP


כל Unix:

יש לי את השורה הבאה cmd אשר עובד בסדר.

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

אבל אני צריך להגדיר את זה עכשיו כדי rsync לשרת מרוחק, כי יש רק שרת FTP על זה. איך אני הולך על זה?

הסתכלתי על העזרה rsync אבל מהר איבדתי (אני לא עושה את הדברים האלה לעתים קרובות מאוד).


176
2018-06-12 09:51




זה דומה לשאול כיצד להשתמש HTTP על IRC, או איך להשתמש ב- FTP על SMTP ... - Juliano
אולי אתה יכול להסביר כמה ההיגיון שלך לרצות לעשות את זה, אז אנחנו יכולים לעזור לך לבוא עם פתרון קיימא. - James
בעצם ניסיתי לבצע גיבוי אוטומטי של שרת אירוח משותף, ולא הבנתי איך עובד rsync. עברתי ל vps עכשיו, ואין לי את המגבלה של FTP יותר - bumperbox
כפילות היא האלוהים שלך: scie.nti.st/2013/4/13/... - user956584
אם פריסה הוא, מה דעתך, ולא אכפת לך NodeJS, לבדוק לפרוס, עצלן ועובד היטב עם git - Frank Nocke


תשובות:


אתה לא. rsync לא יכול לעשות את זה בשבילך, זה פרוטוקול משלו ולא עובד על ה- FTP.

ייתכן, עם זאת, רוצה לנסות csync. IIRC הוא מספק התנהגות כמו rsync על HTTP. אני לא יכול להגיב על זה עובד על FTP, תצטרך לנסות את זה.


76
2018-06-12 10:00



מסתכל על ה csync דף אינטרנט, הוא תומך sftp אבל אין אזכור של תמיכה רגיל ftp. - Keith Thompson


rsync הוא לא יעבוד בשבילך מהסיבות שאחרים הזכירו. למרות זאת, lftp ו ncftp לשניהם יש "מראה" מצבים אשר קרוב לוודאי לענות על הצרכים שלך.

אני משתמש זה לדחוף דברים מהספרייה המקומית שלי ל FTP או מארח האינטרנט sftp:

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 הוא נחמד מאוד. עוד אחד אני פשוט נודע על זה wput אשר יש מובנית רוחב פס מגבילה. - karmakaze


כפי שנכתב על ידי כן, lftp הוא כלי טוב.

אני מציע לך parametrize את התסריט, ולעשות שימוש

exclude-glob

אפשרויות, שאינו כולל שמות קבצים באמצעות תכונה גלובלית (*, .. ..) של הקליפה שלך:

#!/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"

אזהרה: ודא כי ספריית היעד קיים, אחרת הפקודה cd ייכשל, כך המבצע כולל מחיקת עצים של קבצים  יתקיים בספרייה שגויה (שורש)!

יש לי עודכן סקריפט כך --delete אפשרות מושבתת על ידי defaut, לאפשר את זה על ידי uncommenting DELETE= command.


119
2018-01-26 11:58



עזרו לי חבורה גדולה. אבל הייתי צריך להסיר את "set ftp: list-options -a;" אשר שם בלגן דברים למעלה. - mat
האם יש משהו כזה עושה את אותו הדבר על SFTP (FTPS?)? - trusktr
הייתי עושה את זה לפני cd $RCD, כדי למנוע א-סקריפט עם שגיאת הקלדה בטעות מחיקת קבצים מספריה שגויה: set cmd:fail-exit yes. (נראה ש lftp לא שם לב כי הוא יצא למעשה, עד שתוציא את הפקודה הבאה.) - ולפני cd $LCD הייתי עושה את זה (בקליפה המקומית, כלומר, בחלק העליון של scrip): set -eu. - KajMagnus
למעשה, בפעם הראשונה שאני מפעיל את התסריט שלי, עדיין לא יצרתי את המדריך מרחוק, כך שהסקריפט נכשל בתקליטור שאינו קיים. ואז התסריט התחיל mirror, וכך --delete: d קבצים מן הלא נכון. (אבל אני העתקתי אותם שוב, אז במקרה זה זה לא משנה, אולי זה חשוב עבור מישהו אחר.) - KajMagnus
כמו כן, בעקבות העצה הבאה של KajMagnus על השימוש ב- set -eu ו- 'cd $ LCD', הוסף 'mkdir-p $ LCD' לפני 'cd $ LCD' - כך תוכל להיות בטוח כי הספרייה קיימת, מחדש בו. - Paul Gear


בהתאם למה שאתה בעצם מנסה לעשות, גישה אחרת לגמרי יכול להיות שימוש curlftps כדי לטעון תיקיית FTP, ולאחר מכן אולי rsync שתי התיקיות "מקומיות".

ההתקנה שונה בהתאם distro שלך אז אני לא יכול להכליל על זה, אבל אתה צריך להתקיןfuse ו curlftpfs (פרולי דביאן כבר fuse להתקין כברירת מחדל), ולאחר מכן:

  1. sudo apt-get install curlftpfs

  2. ודא את fuse מודול נטען (modprobe fuse)

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

שים לב שאין מקום אחרי הפסיק האחרון (זה לא שגיאת הקלדה!). אם אתה מרוצה מזה או לא רוצה לעשות את זה בכל פעם, אתה יכול להוסיף אותו fstab שלך (בדרך כלל ב /etc/fstab)

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

במקרה זה, אתה צריך לוודא את מודול נתיך נטען לפני.

שימו לב, בשני דברים:

  • כי היזם ירד הפרויקט לפני או שנתיים, אז אני לא יודע איך שמיש / יציב לעת עתה.
  • אם הסיסמה מכילה תו מוזר curlftpfs יכול להיכשל (אולי אתה יכול לעשות משהו עם .netrc).

23
2017-12-11 12:39



FTP Fuse ו rsync הוא הקרוב ביותר לשאלה אבל מטורף בבירור על שום דבר, אבל קבוצה קטנה של קבצים קטנים. - Steve-o
למה זה יהיה מטורף? כברירת מחדל rsync stat () s, הוא אינו משווה את התוכן. זה יכול להיעשות על ידי ls-l עם לקוח FTP. - ptman
אני ממש ניסיתי את זה (דרך rsnapshot) וזה לא עובד, כל קובץ חזר שגיאה, מראה כי rsync לא יכול ליצור קישור. אז באמצעות lftp יחד עם rsnapshot עשה את הטריק - Konstantin Pereiaslov
ללא רבב ב- 14.04 LTS; טיפ נוסף: כאשר אתה מוכן לבטל את טעינת אתר ה- FTP שלך פשוט להשתמש umount DIR איפה DIR היה שלך /path/to/ftp/folder לעיל. - Joe
2017, וזה עדיין עובד! בכנות הדרך הקלה ביותר להעתיק קבצים מאתר ה- FTP של אתר ה- FTP. הר באופן מקומי, ואז rsync כאילו זה היה מקומי - td512


יש weex...

Weex הוא כלי שנועד   להפוך את המשימה מרחוק   שמירה על דף אינטרנט או FTP אחרים   ארכיון. זה יהיה לסנכרן קבוצה של   קבצים מקומיים לשרת מרוחק על ידי   ביצוע העלאות ומחיקות מרחוק   כנדרש.


16
2017-08-17 14:38



עובד כמו קסם! אתה מפעיל את זה ככה: $ weex yourFTPconfigName הנה הוראות לינוקס - sobi3ch


לא עובד על. בצד המרוחק הוא צריך גם את הדמון rsync או פגז שהוא יכול לקרוא rsync מ. Ftp בדרך כלל מאפשר לך לקרוא כמה פקודות ו rsync הוא לא אחד מהם. ישנם כלים אחרים המיועדים למיכון משימות FTP כגון "lftp".


9
2018-06-12 10:03





זה נראה כמו בכושר טוב בחינם: https://savannah.gnu.org/projects/ftpsync/


8
2018-06-12 15:02



בהתחשב בערימה המהבילה של לא לגעת - עם עשרה מטרים רגל מקור חדשות לפי נושאים: SourceForge הפך לאחרונה, אולי אתה צריך לעדכן את הקישור דף האינטרנט של הפרויקט. - HopelessN00b