[BASH] Sprawdzenie czy w katalogu jest plik oraz kopiowanie (NAUKA)

0

Witam,

Na początek zaznaczę, że dopiero zaczynam swoją przygodę z bashem. Znalazłem takie zadanie do wykonania:
Napisz skrypt backup który będzie wywoływany w następujący sposób:backup nazwa_pliku

1. Skrypt ma kopiować plik podany jako parametr do katalogu HOME/bck
2. Jeśli katalog bkck nie istnieje należy go utworzyć
3. Jeśli w katalogu bck jest już kopia pliku i plik nie jest od niej nowszy, to nie należy go kopiować. Należy w takim przypadku wyświetlić odpowiedni komunikat.

pierwsze jak i drugie udało mi się bez większego problemu napisać ale nie mam kompletnie pojęcia jak sprawdzić czy w danym katalogu jest juz plik oraz sprawdzić jego wersje (to czy jest nowszy czy starszy).

edit.

cp -u - do kopiowania tylko wtedy jak plik jest nowszy, tylko jak napisac warunek petli (zapewnie nowej) aby sprawdzal czy jest wersja nowsza i nie kopiowal, wyswietlil komunikat.

kod:

#!/bin/bash
while [ -n "$1" ]
do
 if [ -e "$1" ]; then
  if [ ! -f "$1" ]; then
  echo "$1 nie jest plikiem zwyklym"
  else
  echo "$1 jest plikiem zwyklym"
  mkdir -p ~/bkp
  cp -u $1 ~/bkp
  echo "skopiowane"
  fi
 else
 echo "$1 nie jestnieje"
 fi
shift
done

Proszę o podpowiedź.

0

Jeśli rozumieć nowszy jako zwyczajnie inny to trzeba sprawdzić czy [ `cat plik1` = `cat plik2` ]

0

Nie inny. Ten sam plik tylko np modyfikowany ( z pozniejsza data). Jezeli plik o starszej dacie modyfikacji jest w bck to ma skopiowac na nowo. A jak jest o nowszej to nie kopiuje

1

Aby sprawdzić czy w katalogu jest plik użyj porównania: -e

Aby sprawdzić czy jeden plik jest nowszy od drugiego spróbuj coś takiego:

if [[ $FILE1 -nt $FILE2 ]]; then echo "file 1 newer than file2"; fi

Dokumentację znajdziesz pisząc man test, w tym przypadku opis mówi:
** FILE1 -nt FILE2 FILE1 is newer (modification date) than FILE2 **

1 użytkowników online, w tym zalogowanych: 0, gości: 1