переместите файлы от одного устройства до другого

Не уверенный в dhcp обнаруживают, но можно установить время владения на клиенте DHCP:

router(config-if)#ip dhcp client lease <days> [hours] [minutes]

Это должно в арендном договоре отправлять, dhcp возобновляют, когда арендный договор истекает.

Вызвать возобновление:

router#renew dhcp <interface>

2
задан 26 April 2013 в 11:45
4 ответа

Я также предлагаю вам использовать rsync вместо mv , но добавив к ответу @ Hartmut :

rsync -abmv --remove-source-files /media/localbackup /media/remotebackup/
find /media/localbackup -depth -type d -empty -delete

И 2 дополнения здесь:

  1. Параметр -m ( - prune-empty-dirs ) для rsync , который в моей версии 3.0.7 протокол версии 30 говорит: удалить пустые цепочки каталогов из списка файлов, но по какой-то причине этого не делает. Также нет ошибок ( не единственный, кто это заметил ).
  2. Команда find , которая удаляет пустые каталоги.

теперь, причина против cp && rm заключается в том, что cp может выйти из строя на полпути. В следующий раз, когда вы захотите сделать резервную копию, вы попадете в странную ситуацию (частично скопированные файлы, чтобы назвать худший случай). Также, С другой стороны, rsync прекрасно покрывает эти аспекты.

Кроме того, использование сценария (как следует из первого ответа) для выполнения того, что уже делает rsync, но, что еще хуже, не подходит (извините, Hauke ​​Laging :-)). Здесь не нужно изобретать велосипед.

4
ответ дан 3 December 2019 в 08:54

Ваша команда пытается создать уже существующий каталог. Вам следует сделать этот код оболочки более надежным:

tmpdirname=tmpdir
test -d "/media/remotebackup/${tmpdirname}" &&
  rm -rf "/media/remotebackup/${tmpdirname}"
pushd /media/localbackup/
test -d "$tmpdirname" && { echo Abbruch; exit 1; }
for dir in *; do
  test -d "/media/remotebackup/${dir}" && continue
  mv "$dir" "/media/remotebackup/${tmpdirname}" &&
    mv "/media/remotebackup/${tmpdirname}" "/media/remotebackup/${dir}"
done
popd

Это позволит пропустить каталоги, которые уже были успешно перемещены.

1
ответ дан 3 December 2019 в 08:54

Я бы использовал команду rsync с параметром --remove-source-files.

Что-то вроде rsync -abv --remove-source-files / media / localbackup / * / media / remotebackup /

Пожалуйста, проверьте перед применением в своей среде.

1
ответ дан 3 December 2019 в 08:54

Я нахожу, что мне часто хочется выполнять какие-то операции с файлами, сохраняя при этом их структуру каталогов. Поэтому я определил функцию bash filtercmd. Она берет список файлов для работы в качестве stdin, а в качестве параметров берет операцию (например, mv) и директорию назначения. После этого я могу делать такие вещи в виде простого одного liner

filtercmd () {
if [ ! -d "$2" ]; then echo "$2" does not appear to be a directory; return 1; fi
while read f; do
    dir="${f%/*}"
    if [ ! "$dir" = "$lastdir" ] 
        then mkdir -p "$2/$dir"; echo "$dir"; lastdir="$dir"; fi
    [ -e "$2/$f" ] || $1 "$f" "$2/$f"; done
}

(cd /media/localbackup && find . | filtercmd "mv -vfb" /media/remotebackup)

Это также можно сделать с помощью rsync. Использование удаленного протокола rsync может сэкономить большую пропускную способность, так как протокол должен посылать только измененные куски. Однако, два преимущества filtercmd по сравнению с rsync заключаются в том, что (1) вы можете использовать существующие mv-флаги без изучения rsync-эквивалентов и (2), и мы также можем использовать filtercmd для более мощных вещей, таких как:

(z(){ grep . <$1|gzip >$2.gz;};find . -name '*.txt' | filtercmd z ../gz })

, которая выборочно берет txt-файлы, удаляет пустые строки и gzips их в целевой каталог.

.
2
ответ дан 3 December 2019 в 08:54

Теги

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