Rsync лише файли певного користувача


0

Чи існує спосіб rsync лише файлів певного користувача? У мене є папка, яка містить файли багатьох користувачів, але хотіла б робити резервну копію файлів від конкретного користувача.

Я переглянув сторінки чоловічої статі для rsync, але, схоже, не існує такого прапора.

Будь-які ідеї?

Відповіді:


0

Ні, немає жодного способу виділити безпосередньо з командного рядка rsync файли конкретного користувача.

Однак дуже просто створити список цих файлів, наприклад, з такою командою

   find /src/directory -type f -exec ls -lh {} \; | awk '{if ($3 == "your_name") for (i=1; i<=NF-8; i++) $i = $(i+8); NF-=8; print}'

findзнаходить усі файли в дереві під каталогом / src / і виводить довгий список, який включає власника, а потім передає ці списки до awk, який вибирає ті, що належать вам ("ваше ім'я"), а потім лише для них, виводить повний шлях. Дивна конструкція, що починається з for, пов’язана з тим, що деякі імена файлів можуть містити пробіл, тому ця конструкція друкує всі лексеми ( i.e.усі символи, обмежені пробілами) з 9-го стовпця (назви файлів можуть містити довільну кількість пробіли). Крім того, ця конструкція гарантує, що вона залишається на одній лінії.

Ви можете перенаправити цей вихід на файл, а потім використовувати rsync лише для файлів, перелічених у цьому файлі.


0

Відповідь Маріуса Матутія для мене не спрацювала: я туди потрапляв лише масу -rw-r--r--рядків.

Тому я розробив цю відповідь:

  1. У findкоманди є варіант -user-group), який набагато простіше у використанні. Нам потрібні відносний шлях / назви файлів:
    а) findваріант: -printf '%P\n'або
    б) труба наскрізьsed -e "s#/path##"
  2. Rsync пропонує можливість синхронізації з файлів: . Вам потрібен локальний файл. Таким чином, ви повинні натиснути rsync файли, або сервер, який тягне, повинен отримати його спочатку з віддаленої сторони, де список генерувався раніше.--files-from=FILE

=> Для мого прикладу це працює:
1a) find /usr/share/piwik/ -user www-data -printf '%P\n' > /tmp/find-piwik-rsync.listабо
1b)find /usr/share/piwik/ -user www-data | sed -e "s#/usr/share/piwik/##" > /tmp/find-piwik-rsync.list

2) rsync -a --files-from=/tmp/find-piwik-rsync.list /usr/share/piwik/ remote:/usr/share/piwik

Спершу слід перевірити його -n/ --dry-run.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.