cp / rsync - перезаписать, если меньше, сделать резервную копию оригинала, а затем перезаписать, если больше

Вот безопасный способ открыть то, что fileсчитает текстовыми файлами в текущем каталоге в vim. Конечно, вы можете изменить vimна echo, чтобы просто печатать имена.

#!/bin/bash

for f in *; do
   out=$(file "$f")
   [[ "${out##*: }" =~ ASCII ]] && text_files+=("$f")
done

vim "${text_files[@]}"

exit

РЕДАКТИРОВАТЬ :использовать два знака #в расширении параметра для обработки имен файлов с :в них.

0
02.03.2020, 18:30
1 ответ

Вы не сказали, что вы хотите делать с файлами одинакового размера. Вы также не сказали, хотите ли вы перезаписать файлы в своем «А» или ваш каталог «B».

Я не знаю, можно ли это сделать только с помощью rsync или cp. В этом примере «/tmp/A» — исходный каталог, «/tmp/B» — целевой, а «/tmp/C» — это место назначения для резервных копий.

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

# get the size and filnames of files in '/tmp/A' directory and loop through each file found
ls /tmp/A | while read filename
do
  # get the size of file in 'A' directory
  sizeA=$( ls -l "/tmp/A/${filename}" | awk '{print $5}')

  # get the size of corresponding file in 'B' directory
  sizeB=$(ls -l "/tmp/B/${filename}" | awk '{print $5}')

  # compare file sizes and perform appropriate action
  if [ ${sizeB} -gt ${sizeA} ]
  then
    echo "file in B named \"${filename}\" is larger than A file"

    # Backup and overwrite the file
    cp "/tmp/B/${filename}" /tmp/C/
    cp -f "/tmp/A/${filename}" /tmp/B/

  else
    if [ ${sizeB} -lt ${sizeA} ]
    then
       echo "file in B named \"${filename}\" is smaller than A file"
       # overwrite the file
       cp -f "/tmp/A/${filename}" /tmp/B/
    else
       echo "The files \"${filename}\" are the same size"
    fi
  fi
done

Я провел очень ограниченный тест, и, похоже, он сработал. Пожалуйста, тщательно протестируйте и измените в соответствии с вашими потребностями.

0
28.04.2021, 23:21

Теги

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