Как да синхронизираме файлове в Linux: 30 практически примера

Синхронизирането на файлове между локални и отдалечени системи е важен аспект на системната администрация. В Linux има различни инструменти за постигане на тази задача, като rsync, scp и lftp. В тази статия ще разгледаме 30 примера за синхронизиране на файлове и директории от локалната към отдалечената машина и обратно, като използваме тези инструменти.

Съдържание

1. Основно копиране на файлове с rsync

rsync е мощен инструмент за синхронизиране на файлове и директории. Основната команда за копиране на файл от локална към отдалечена машина е:

rsync -avz файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/

Тази команда копира файл.txt в отдалечената директория, запазвайки всички атрибути на файла.

2. Копиране на директория с rsync

За да копирате директория с всичките ѝ съдържания, използвайте:

rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

Тази команда синхронизира съдържанието на локалната директория с отдалечената директория.

3. Синхронизиране на файлове от отдалечена към локална машина с rsync

За да синхронизирате файлове от отдалечената към локалната машина, обърнете източника и дестинацията:

rsync -avz потребител@отдалечен_сървър:/път/до/отдалечена/директория/ /локална/директория/

4. Изключване на файлове по време на синхронизиране

Можете да изключите определени файлове или директории, като използвате опцията --exclude:

rsync -avz --exclude 'файл.txt' /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

Тази команда пропуска синхронизирането на файл.txt.

5. Ограничаване на скоростта на прехвърляне

Можете да ограничите скоростта на прехвърляне на данни с rsync, като използвате опцията --bwlimit:

rsync -avz --bwlimit=1000k /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

Тази команда ограничава скоростта до 1MB/s.

6. Изпращане на компресирани данни

Компресирането на данни преди прехвърляне може да ускори процеса. Това се постига чрез опцията -z:

rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

7. Синхронизиране на файлове с scp

scp е друг популярен инструмент за прехвърляне на файлове през SSH. За да копирате файл от локална към отдалечена машина, използвайте:

scp файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/

8. Копиране на директория с scp

За да копирате директория и нейното съдържание, използвайте опцията -r:

scp -r /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

9. Копиране на файлове от отдалечена към локална машина с scp

Можете също да копирате файлове от отдалечен сървър към локалната машина:

scp потребител@отдалечен_сървър:/път/до/отдалечена/директория/файл.txt /локална/директория/

10. Използване на lftp за синхронизиране на файлове

lftp е друг инструмент, който поддържа синхронизация на файлове. За да го използвате, въведете:

lftp -e "mirror --reverse /локална/директория/ /път/до/отдалечена/директория/; quit" -u потребител,парола ftp://отдалечен_сървър

11. Копиране на файлове чрез FTP с lftp

lftp позволява копиране на файлове през FTP:

lftp -e "get /път/до/отдалечен/файл.txt -o /локална/директория/файл.txt; quit" -u потребител,парола ftp://отдалечен_сървър

12. Синхронизиране на файлове през SFTP с lftp

За синхронизиране на файлове през SFTP с lftp, използвайте:

lftp -e "mirror --reverse --use-pget-n=8 /локална/директория/ /път/до/отдалечена/директория/; quit" -u потребител,парола sftp://отдалечен_сървър

13. Използване на rsync за синхронизиране на файлове по SSH

С rsync, можете да синхронизирате файлове през SSH, като използвате:

rsync -avz -e ssh /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

14. Синхронизиране на файлове със запазване на символни линкове

Ако искате да запазите символни линкове, използвайте опцията -l:

rsync -avzl /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

15. Синхронизиране на файлове с прескачане на съществуващи файлове

Ако искате да пропуснете синхронизирането на файлове, които вече съществуват, използвайте:

rsync -avzu /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

16. Показване на прогреса по време на синхронизиране

За да следите прогреса на синхронизирането, добавете опцията --progress:

rsync -avz --progress /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

17. Копиране на файлове от отдалечена машина с scp през определен порт

Ако отдалеченият сървър използва различен SSH порт, посочете го с -P:

scp -P 2222 потребител@отдалечен_сървър:/път/до/отдалечена/директория/файл.txt /локална/директория/

18. Синхронизиране на файлове по мрежа с ограничена честотна лента

Ако работите в мрежа с ограничена честотна лента, можете да ограничите честотата на предаване на данни:

rsync -avz --bwlimit=500k /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

19. Използване на rsync за синхронизиране на големи файлове

За синхронизиране на големи файлове използвайте rsync, тъй като той е оптимизиран за подобни задачи:

rsync -avz --partial /локална/директория/голям_файл.iso потребител@отдалечен_сървър:/път/до/отдалечена/директория/

20. Архивиране на локални файлове на отдалечен сървър с scp

За архивиране на локални файлове на отдалечен сървър използвайте scp:

scp -r /локална/директория/ потребител@отдалечен_сървър:/път/до/резервно/копие/

21. Синхронизиране на файлове между две отдалечени машини с rsync

Можете да използвате rsync, за да синхронизирате файлове между две отдалечени машини:

rsync -avz -e ssh потребител@сървър1:/път/до/директория/ потребител@сървър2:/път/до/директория/

22. Копиране на файлове през SSH тунел с rsync

За да копирате файлове през SSH тунел, използвайте:

rsync -avz -e "ssh -p 2222" /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

23. Синхронизиране на файлове със запазване на оригиналната структура

Ако искате да запазите оригиналната структура на директорията, използвайте:

rsync -avz --relative /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

24. Копиране на файлове от отдалечена машина с scp през прокси

За да копирате файлове през прокси сървър, използвайте следната команда:

scp -o "ProxyCommand=nc -X connect -x proxy:8080 %h %p" потребител@отдалечен_сървър:/път/до/директория/файл.txt /локална/директория/

25. Използване на rsync за инкрементално архивиране

Инкременталното архивиране с rsync може да спести време и ресурси:

rsync -avz --link-dest=/път/до/предишно/архивно/копие /локална/директория/ потребител@отдалечен_сървър:/път/до/архив/

26. Синхронизиране на файлове с различна собственост

Ако файловете имат различни права на достъп и собственост, използвайте rsync с опцията -o:

rsync -avzo /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

27. Копиране на файлове през SFTP с scp

Можете да използвате scp за прехвърляне на файлове през SFTP:

scp -S sftp файл.txt потребител@отдалечен_сървър:/път/до/отдалечена/директория/

28. Използване на rsync за синхронизиране на файлове на отдалечен сървър с различен порт

Ако отдалеченият сървър използва различен порт, посочете го с -e:

rsync -avz -e "ssh -p 2222" /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

29. Автоматизиране на синхронизирането с cron и rsync

Автоматизирайте синхронизирането с помощта на cron. Добавете задача в crontab:

0 2 * * * rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/

Тази задача ще се изпълнява всеки ден в 2:00 часа.

30. Синхронизиране на директории в реално време с rsync и inotify

Комбинирайте rsync и inotify за синхронизиране в реално време:

inotifywait -m /локална/директория/ -e create -e modify -e delete -e move | while read path action file; do rsync -avz /локална/директория/ потребител@отдалечен_сървър:/път/до/отдалечена/директория/ done

Това ще наблюдава директорията и ще синхронизира промените веднага.

Заключение

Синхронизирането на файлове между локални и отдалечени системи е важен аспект на управлението на данни в Linux. С тези 30 примера за използване на rsync, scp и lftp, можете ефективно да управлявате и синхронизирате вашите файлове. Тези команди обхващат основни и по-сложни сценарии, които могат да се използват в различни ситуации, осигурявайки гъвкавост и надеждност в процеса на синхронизиране на данни.

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: