С Java8 это можно сделать еще более чистым, используя комбинацию Comparator
и Lambda expressions
Пример:
class Student{
private String name;
private List scores;
// +accessor methods
}
class Score {
private int grade;
// +accessor methods
}
Collections.sort(student.getScores(), Comparator.comparing(Score::getGrade);
Это могло бы, но любое время, соответствующие файлы в export
и webroot
имеют тот же довольный, но различное время изменения, Вы волновали бы выполнение ненужной операции копии. Вы, вероятно, получили бы немного более умное поведение от rsync
:
rsync -pr ./export /path/to/webroot
Кроме того, rsync
может скопировать файлы от одного хоста до другого по соединению SSH, если у Вас когда-нибудь есть потребность сделать это. Плюс, это имеет огромное количество опций, которые можно определить для тонкой настройки его поведения - смотрят в странице справочника для деталей.
РЕДАКТИРОВАНИЕ : относительно Вашего разъяснения о том, что Вы подразумеваете под сохранением полномочий: Вы, вероятно, хотели бы кончить -p
опция.
Походит на задание для cpio
(и следовательно, вероятно, tar GNU может сделать это также):
cd export
find . -print | cpio -pvdm /path/to/webroot
при необходимости в сохраненных владельцах необходимо сделать это как корень, конечно. -p
опция является 'режимом передачи', означая копию между местоположениями; -v
является подробным (но не интерактивным; существует различие); -d
средства создают каталоги по мере необходимости; -m
средства сохраняют время изменения. По умолчанию без -u
опция, cpio
не перезапишет файлы в целевой области, которые являются более новыми, чем тот от исходной области.
Так похож на Вас, получил весь корректный args к cp