Los archivos que está viendo no son cron
sino wget
de salida. El uso más común de la salida wget
es obtener páginas web en el disco.
Mientras redirige stdin
y stdout
, no tuvo en cuenta el uso wget
de guardar páginas web.
Si solo desea acceder a esa URL, puede solicitar wget
que no guarde ninguna salida con la opción -q
silenciosa.
porman wget
:
-q
--quiet Turn off Wget's output.
También preferiría no tener un trabajo cron en un servidor compartido ejecutándose cada minuto, y se ejecutaría como mínimo cada 5 minutos, como en:
*/5 * * * * wget -q http://yoururl > /dev/null 2>&1
diff -u <(ls dir1) <(ls dir2)
Это гарантирует, что diff
не заглядывает внутрь подкаталогов.
Или попробуйте это, если вы смелы;)
diff -u <(find dir1/ -maxdepth 1 -type d -exec basename {} \;) <(find dir2/ -maxdepth 1 -type d -exec basename {} \;)
Это довольно простая задача для rsync
.
rsync -n -av dir1/ dir2/ | grep '/$' | grep -Fvx './'
Это пробный запуск rsync
загрузки содержимого dir1
в dir2
и отображение только строк, заканчивающихся косой чертой (в каталогах ), за исключением, возможно, верхнего -сама директория уровня.
Вот простой тест/демонстрация:
$ # create 1500 folders in dir1:
$ for i in $(jot -w %04d 1500); do mkdir -p dir1/dir-$i; done
$ # clone dir1 to dir2, then remove one directory:
$ rsync -a dir1/ dir2/
$ rmdir dir2/dir-0749/
$ # rsync -n will tell you which one is missing:
$ time rsync -n -av dir1/ dir2/ | grep '/$' | grep -Fvx './'
dir-0749/
real 0m0.038s
user 0m0.001s
sys 0m0.041s
Если вы хотите адаптировать этот метод для проверки папок, отсутствующих в dir1
, но присутствующих в dir2
, используйте rsync
параметр --delete
:
$ rmdir dir1/dir-0479/
$ time rsync -nav --delete dir1/ dir2/ | grep '/$' | grep -Fvx './'
deleting dir-0479/
dir-0749/
Строка deleting...
говорит вам, что dir-0479
отсутствует в dir1
, но присутствует в dir2
.
[EDIT] После публикации я заметил, что @freedo уже упоминал comm
до меня. [/ РЕДАКТИРОВАТЬ]
Первое сохранение списков деревьев каталогов в файлы:
# Using parenthesis ensures the command are executed inside a subshell, so
# changing directory (`cd`) back afterwards is not needed.
(cd dir1 ; find -type d | sort >/tmp/list1)
(cd dir2 ; find -type d | sort >/tmp/list2)
Тогда эта команда покажет, что присутствует в dir1
, но не в dir2
:
comm -23 /tmp/list1 /tmp/list2
Хотя эта команда покажет, что находится в dir2
, но не вdir1
:
comm -13 /tmp/list1 /tmp/list2
И это покажет, что присутствует в обоих:
comm -12 /tmp/list1 /tmp/list2
Наконец, это покажет всю информацию выше сразу, в 3 столбцах:
comm /tmp/list1 /tmp/list2
Утилита comm
кажется малоизвестной. Но он, вероятно, установлен по умолчанию в большинстве, если не во всех системах Linux. В Debian он находится в пакете «coreutils», который помечен как «необходимый».
Малоизвестная команда, но comm
однажды оказалась очень полезной для меня, когда я решал неприятные проблемы в большой файловой системе (> 25 Tb ). Я считаю своим долгом перед comm
защищать его использование.