Форум программистов, компьютерный форум, киберфорум
Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50

Скопировать последние файлы с Windows на Linux

16.06.2023, 12:18. Показов 4234. Ответов 71

Студворк — интернет-сервис помощи студентам
Добрый день.
Имеется Centos 7 и Windows Server 2012. Обе машины в домене.
Нужно с шары на винде, скопировать последние добавленные файлы в линукс.
При этом на линуксе конечная папка должна быть пустой, потому что потом демон оттуда забирает файлы и отправляет по другим своим местам.

Как такое провернуть?
Через WinSCP в принципе можно, но там будет больше синхронизация, чем просто копирование, тем более в конечной папке будет много файлов, а этого не надо.
Через команду cp в принципе будет то же самое, как и с find или rsync. Вроде бы можно как-то объединить всё это безобразие и написать скрипт, который будет через find находить, а через rsync копировать.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2023, 12:18
Ответы с готовыми решениями:

Как скопировать файлы между Linux кодов в сценарии по perl
Задача такая, как мне скопировать файлы между Linux(CentOS) в сценарии по perl. пробовал scp но он запрашивает пароль, может возможно как...

можно ли скопировать БД(ibdata1) с windows на linux
Возможно ли с сервера под управлением Windows, перекинуть сохранённые базы MySQL на сервер с OS Linux? и как это сделать? сайт и...

Как скопировать файлы в папку Windows?
Здравствуйте! Не по своей вине удалил несколько файлов из папки Windows. Эти файлы восстановить из корзины уже нельзя, ибо удалены. ...

71
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13441 / 7534 / 831
Регистрация: 09.09.2009
Сообщений: 29,554
21.06.2023, 10:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от zawibis Посмотреть сообщение
Например в одном исходном каталоге 22 файла от сегодняшней даты, а он скопировал 17
часовые пояса?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 10:14  [ТС]
Dmitry, в смысле? Сервера в одном домене. Дата по всем файловым менеджерам на серверах определяется как та, что в системе на локальном компьютере.
Даже если сдвиг на 2-6 часов, то дата создания у файлов 10-11 дня сегодня, имею ввиду не на пересечении ночи
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
21.06.2023, 10:31
Цитата Сообщение от zawibis Посмотреть сообщение
Например в одном исходном каталоге 22 файла от сегодняшней даты, а он скопировал 17
В другом каталоге 16 новых файлов, а скопировал 1, притом файл бд (thumbs.db)
Ну, надо дебажить. Выводить полученные даты, морщить лоб, думать ... Я бы, после этой строки
Python
1
cdate = creation_date(src_path + entry.name)
добавил такую
Python
1
print(src_path + entry.name + ' -- ' + cdate)
Выведет имя файла с путём и время, которое определилось функцией, как дата создания.

А! Дату ещё надо конвернуть назад, в человечий вид.

Добавлено через 3 минуты
Как-то так
Python
1
datetime.datetime.utcfromtimestamp(cdate).strftime('%Y-%m-%d %H:%M:%S')
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 12:02  [ТС]
Kubuntovod, ругается на
print(src_path + entry.name + ' -- ' + cdate)

Typerror: must be str, not float
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
21.06.2023, 14:01
Цитата Сообщение от zawibis Посмотреть сообщение
Typerror: must be str, not float
Это легко решается
Python
1
print(src_path + entry.name + ' -- ' + str(cdate))
Только cdate это время в миллисекундах. Надо в человечий вид перевести, а потом принт.
1
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 14:16  [ТС]
Kubuntovod, вывел в консоли все файлы с временем, а затем скопировал как нужно.

Добавлено через 1 минуту
а можно как-то сделать, чтобы он только картинки копировал или напротив исключить файл Thumbs.db ?
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
21.06.2023, 17:17
Лучший ответ Сообщение было отмечено zawibis как решение

Решение

Цитата Сообщение от zawibis Посмотреть сообщение
а можно как-то сделать, чтобы он только картинки копировал
Копирует только *.png и *.jpg
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/usr/bin/env python3
import datetime
import os
import shutil
import time
 
def creation_date(path_to_file):
    stat = os.stat(path_to_file)
    try:
        # Если удалось вынуть дату создания, возвращаем её
        return stat.st_birthtime
    except AttributeError:
        # Иначе, возвращаем дату модификации
        return stat.st_mtime
 
# Текущая дата
now = datetime.datetime.now()
 
yyyy = now.year
mm = now.month
dd = now.day
 
# Текущая дата, в формате "год-мксяц-день 00:00:00"
date_time = datetime.datetime(yyyy, mm, dd)
# В формате UNIX
unixtime_midnight = time.mktime(date_time.timetuple())
 
src_paths = ["/home/user/Desktop/1/", "/home/user/Desktop/2/"]
dst_paths = ["/home/user/Public/Folder/1", "/home/user/Public/Folder/2"]
 
# Цикл по количеству исходных путей
for p in range(len(src_paths)):
    src_path = src_paths[p]
    # Обход каталога
    with os.scandir(src_path) as i:
        for entry in i:
            # Если элемент - файл
            if entry.is_file():
                if entry.name.endswith('png') or entry.name.endswith('jpg'):
                    cdate = creation_date(src_path + entry.name)
                    if cdate > unixtime_midnight:
                        shutil.copy(src_path + entry.name, dst_paths[p])
Если ещё какие типы надо, их легко добавить по аналогии.
0
1152 / 405 / 89
Регистрация: 30.08.2017
Сообщений: 2,487
21.06.2023, 20:13
тогда уж
Python
1
2
3
picture_suffix = ('jpg', 'png', 'gif')
...
if entry.name.endswith(picture_suffix):
Пишу на глаз, но вроде рабочее и должно быть универсальнее
1
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
22.06.2023, 06:39
Цитата Сообщение от _sg2 Посмотреть сообщение
Пишу на глаз, но вроде рабочее и должно быть универсальнее
Да, работает.
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
22.06.2023, 08:53  [ТС]
Kubuntovod, спасибо большое.
Я вот тут задумался, если поставлю чтобы через планировщик этот скрипт запускался в 7 утра, получается что ничего нового он не добавит. Потом в папке появятся файлы, например между 12-16 часами, но в след. раз скрипт запустится в 7 утра след. дня и для него снова не будет новых файлов. Так получается?
Можно поставить запуск на 23:50 например, тогда будет копировать. Или же чтобы как-то смотрел на изменения за последние 24 часа с момента его прошлого запуска
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
22.06.2023, 09:02
zawibis, вот с этого и начался у нас разговор
Предлагаю в 23:50 запущать. В эти 10 минут никто же не добавить новых файлов?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
22.06.2023, 10:13  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
В эти 10 минут никто же не добавить новых файлов?
Не, не должны.
0
Windows must die
608 / 881 / 104
Регистрация: 23.11.2021
Сообщений: 5,163
Записей в блоге: 19
22.06.2023, 10:22
zawibis, а таки в чем проблема - ридонли по NFS монтировать и тем же rsync'ом синхронизировать?
Зачем такие сложности, что аж змеюку подтянули?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
22.06.2023, 12:35  [ТС]
Eddy_Em, я не нашёл в rsync как реализовать копирование только новых файлов в пустую папку.
Там есть опция update, но она ведь сверяет с уже имеющимися в конечном месте файлами, а это мне не подходит.
В nfs вроде такая же проблема.

Добавлено через 36 минут
Kubuntovod, а если сделать за последние 24 часа - это сложно/возможно?
0
Windows must die
608 / 881 / 104
Регистрация: 23.11.2021
Сообщений: 5,163
Записей в блоге: 19
22.06.2023, 12:38
zawibis, да на баше скрипт напиши: в начале копирования делаешь touch timestamp. На следующий день в новую директорию копируешь лишь файлы младше timestamp предыдущего.
Буквально несколько строк на баше!
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
22.06.2023, 12:43  [ТС]
Eddy_Em, кстати, тут небольшая проблема. Вот у меня есть картинка с датой 2022 года, я копирую её в папку и дата остаётся та же, то есть скрипт не понимает.
При этом если зайти в свойства файла, то та самая дата с 2022 годом - это дата изменения и она берётся скриптом. Нужно как-то сделать чтобы он обращал внимание на дату создания.
0
Windows must die
608 / 881 / 104
Регистрация: 23.11.2021
Сообщений: 5,163
Записей в блоге: 19
22.06.2023, 12:49
zawibis, в мане на find все есть: можно использовать ведь не только atime или mtime, но и ctime.
Другое дело, что ctime не везде есть.
А зачем, кстати, вот так картинки раскидывать - почему бы просто слепок не делать?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
22.06.2023, 13:33  [ТС]
Eddy_Em, не понял насчёт слепка.
У пользователей винда, им удобно просто скопировать с флешки в общую папку и забыть.
Моё же дело забрать с общего ресурса на сервер под линуксом, притом не всё (потому что там их 5тыщ с лишнми и будет больше), а только новое.
Слепок - это как снапшот?

Добавлено через 2 минуты
Kubuntovod, А ещё может быть ситуация, когда человек скопирует изображение с заменой, тогда с датами тоже буде будет.
Может сделать сравнение по дате изменения и дате создания и какая больше и копировать исходя из этого.
Или же добавлять какой-то символ в начало/конец файла в исходной папке чтобы было понятно что скопировано или нет.
Ну или же вообще в какой-нибудь атрибут файла изображения (например Комментарий) записывать что-то типа "загружено" и так отличать что уже было, а что новое.
0
Эксперт NIX
3308 / 935 / 202
Регистрация: 14.01.2013
Сообщений: 4,777
22.06.2023, 15:04
Цитата Сообщение от zawibis Посмотреть сообщение
Или же добавлять какой-то символ в начало/конец файла в исходной папке чтобы было понятно что скопировано или нет.
Ну или же вообще в какой-нибудь атрибут файла изображения (например Комментарий) записывать что-то типа "загружено" и так отличать что уже было, а что новое.
Может завести список того, что не надо копировать?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
23.06.2023, 07:47  [ТС]
Kubuntovod, не надо копировать то, что уже скопировано
Так то конкретных ограничений нет, есть только нюансы. Файл будет как бы новым, но скрипт не поймёт. Для него ведь новое - это когда Дата изменения сегодняшняя.

Добавлено через 3 минуты
например можно все уже имеющиеся файлы в исходной папке переименовать, добавив в конец _copy, а новые файлы будут без этой приставки. Скрипт будет смотреть в папку по крону, увидит что появились файлы без окончания, скопирует их и потом поставит им в исходной папке окончание
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2023, 07:47

Скопировать установочные файлы для Windows 7 через командную строку
не могу скопировать устоновочные файлы для виндовс 7 через командную строку с флеш накопителя на хард почему при вводе команды xcopy...

Bat файлы Windows и скрипты Linux
Написал вот такой bat файл @echo off echo "Приветствую вас %username%".Сегодня: %date% pause copy "%~f0"...

Пропали файлы при переносе с Linux на Windows
VMware + CentOS ... Переключаюсь на CentOS, всовываю флеху, которую юзаю под Windows 7 (все файлы отображаются). Через krusaider...

Скрытые для Linux файлы на Windows 10?. Как?!
На харде установлены Windows 10 и на др. диске Linux Mint, в которой видны разделы Windows, если они примонтированны. В том числе и ...

После клонирования репы c Linux на Windows все файлы сразу удаляются
Использую git для синхронизации заметок в Obsidian. Изначально заметки писал только на Windows, последние месяца 3 пишу только на Linux,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru