предложения по написанию сценария перемещения большого количества файлов с одного хоста Linux на другой [закрыто]

У меня есть несколько ТБ и много тысяч файлов, которые мне нужно переместить по сети с одного хоста Linux на другой. Я хотел бы получить предложения о том, как это сделать, учитывая следующие моменты:

  • перемещаемых файлов будут соответствовать профилю даты (т.е. «старше» x лет)
  • сбой одного файла не должен предотвратить перемещение остальных (continue_on_error) и должно быть отмечено в файле журнала.
  • файлы на исходном хосте должны автоматически удаляться после успешного перемещения
  • структура каталогов на исходном хосте содержит много файлов, которые НЕ должны быть перемещены, потому что они не соответствуют профилю даты. к этим файлам нельзя прикасаться
  • сценарий должен работать непрерывно без вмешательства пользователя до завершения
  • , неважно, перемещаются ли файлы последовательно или параллельно

xargs и Rsync подойдут, за исключением того, что он, похоже, не предоставляет возможность «удалить» исходный файл после того, как он был успешно скопирован.

1
задан 25 July 2013 в 04:16
1 ответ

Rsync действительно имеет параметр для удаления исходных файлов . В сочетании с флагом контрольной суммы он должен быть достаточно надежным для такого рода операций.

Однако вы можете использовать git-application для миграции (он будет использовать rsync под кожух для фактических передач).

На хосте A:

mkdir annex
git init
git annex init "host A"

На хосте B:

git clone ssh://A/path/to/annex annex
git annex init "host B"
git annex sync

Еще раз на хосте A:

git remote add b ssh://B/path/to/annex

Добавьте файлы в git-application на хосте A, скопировав их в Папка приложения:

git annex add .
git commit . -m "Added files"
find /path/to/files* -mtime +5 -exec git annex move {} --to b\;
git-annex sync

См. пошаговое руководство git-application для получения подробной информации об использовании .

7
ответ дан 3 December 2019 в 16:35

Теги

Похожие вопросы