Так как Вы не упоминаете, я предполагаю, что это находится на Linux.
dmidecode -t memory
dmidecode -t 16
lshw -class memory
Необходимо будет propably выполнить что-то как rsync -avun --delete
в обоих направлениях.
Но что Вы на самом деле пытаетесь выполнить?
Обновление:
rsync -avun --delete $TARGET $SOURCE |grep "^deleting "
даст Вам список файлов, которые не существуют в целевом каталоге.
"grep удаляют", потому что каждая строка печатает: удаление.. файл..
rsync -avun $SOURCE $TARGET
даст Вам список "различных" файлов (включая новые файлы).
Для добавления в ответ Нильса (для всех, кто сталкивается с этим через Google), по умолчанию rsync
сравнивает только размеры файлов и время модификации, чтобы определить, есть ли какие-то различия. (Если они отличаются, это делает больше, но если они одинаковы, то на этом всё.)
Если вы хотите сравнить фактический размер файла -с, даже для файлов, которые имеют одинаковый размер и время последней модификации, добавьте флаг -c
, чтобы сказать rsync
, чтобы сравнить файлы с помощью контрольной суммы.
rsync -avnc $SOURCE $TARGET
(Опция -u
говорит rsync игнорировать файлы, которые являются более новыми в $TARGET
, чем на $SOURCE
, которые вы, вероятно, не хотите, если вы сравниваете содержимое.)
Для тех, кто менее знаком с rsync
:
rsync -rvnc --delete ${SOURCE}/ ${DEST}
-n
: самый важный бит - сделать не ничего менять; -rc
: сравнивать только содержимое (в противном случае используйте -ac
); -v
: список файлов) - -delete
: ищите симметричную, а не однонаправленную разницу. /
означает «заглянуть внутрь каталога и сравнить его содержимое с местом назначения». Будет напечатан обычный
rsync
вывод,
- с одним
в строке для каждого «нового» файла в $ {SOURCE}
и одна строка «удаление <имя файла>» для каждого «нового» файла в
$ {DEST}
.Он также может выводить несколько предупреждений, например «пропуск нестандартного файла <имя файла>» для символических ссылок.
PS. Я знаю, что это ужасный PS, но он действительно был добавлен в спешке. Тем не менее, держу пари, это может оказаться полезным.
find $SOURCE -type f -exec md5sum {} \; | tee source.md5
find $DEST -type f -exec md5sum {} \; | tee dest.md5
Если имена файлов не содержат символов новой строки, мы можем отсортировать файлы *. Md5
и diff
] их. (Это будет работать только для файлов; то есть пустой каталог с обеих сторон не будет обнаружен.)
Из вашего вопроса я понял, что вы не хотите использовать diff на ls, но вы также можете рекурсивно использовать diff для каталогов:
diff -rq DIR1 DIR2
Me tomó algunos intentos hacer que esto funcionara. La respuesta de Nils requiere que $TARGET
termine en /
final, como lo explica ジョージ.
Aquí hay una versión que agrega explícitamente el final/
:
rsync -avun --delete ${TARGET}/ ${SOURCE} | sed -ne 's/^deleting *//p'
Esto proporciona la lista de archivos que existen debajo del directorio ${SOURCE}
pero no debajo del directorio ${TARGET}
.
Uso sed
aquí para eliminar el deleting
inicial de las líneas de salida y para imprimir solo esas líneas.
No uso la opción rsync
-c
porque comparar el contenido de los archivos sería mucho más lento para mis casos de uso, y comparar solo los tamaños de los archivos y los tiempos de modificación también parece suficiente en estos casos. No tengo ninguna razón para sospechar que mis computadoras sufren problemas de sesgo de reloj o que algo maliciosamente cambió las marcas de tiempo. También,el resultado de -c
no puede cambiar la decisión de eliminar un archivo, solo la decisión de actualizar o mantener un archivo.
También uso -u
y-a
(en lugar de -r
), para poder volver a -usar la línea de comando y cambiarla para copiar directorios y archivos seleccionados de ${SOURCE}
a ${TARGET}
, así:
rsync -avu ${SOURCE}/{dirA,dirB,fileX} ${TARGET} # copy some files