rsync просто добавляет файлы и каталоги с новыми именами в существующую резервную копию

Предполагая, что в каждом файле всегда есть 2 поля и всегда в одном порядке. Вот один из способов сделать это с помощью sed:

#!/bin/sh

printf '%s\t%s\n' Colour Hight

sed '

    / *Colour: */ {
        s///
        h
        n
    }

    / *Hight: */ {
        s///
        G
        s/\n/\t/g
    }

' "$@"

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

Мы используем группировку операторов с { и } . Все команды в группе применяются только к адресным линиям, в данном случае линиям, выбранным шаблонами / * Цвет * / и / * Высота * / .

В строках «Цвет» и «Высота» мы сначала удаляем текст, который был сопоставлен ( * Цвет * или * Высшее * ) с помощью s /// .

Затем в строке «Цвет» мы удерживаем h оставшийся текст в удерживаемом пространстве , а затем переходим к следующей строке ввода без печати ( n ).

В строке Hight мы получаем / добавляем G содержимое удерживаемого пространства к пространству шаблонов, соединенное с новой строкой '\ n' sed . Затем мы подставляем табуляцию \ t для этой новой строки, и sed выводит результат.

Этот ответ должен работать со всеми версиями sed , будь то Linux, FreeBSD или OS X.

0
15.05.2018, 13:19
1 ответ

Ha complicado demasiado su mando. Suponiendo un sistema de archivos completo -, podría usar algo como

rsync -aHXA --delete /source/ /destination/

Sin embargo, si el sistema muere mientras la copia está en progreso, terminará con una copia mixta de archivos antiguos y nuevos. Si desea crear copias de seguridad, recomendaría una solución que se base en rsync, como rsnapshot.

2
28.01.2020, 02:32

Теги

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