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

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

16.06.2023, 12:18. Показов 3416. Ответов 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
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
16.06.2023, 13:30
Цитата Сообщение от zawibis Посмотреть сообщение
последние добавленные файлы
Как это определяется?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
16.06.2023, 13:54  [ТС]
Добавлено через 13 минут
Цитата Сообщение от Kubuntovod Посмотреть сообщение
Как это определяется?
Датой добавления файлов

Добавлено через 6 минут
даже точнее датой создания файлов
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
16.06.2023, 15:06
Цитата Сообщение от zawibis Посмотреть сообщение
даже точнее датой создания файлов
Ну, например, дата создания сегодняшняя, у 5 файлов. Скопировали. После этого новые файлы не появятся? Если появятся, то как их отделить от тех, что уже скопировали?
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
16.06.2023, 15:18  [ТС]
Раз в сутки например запускать проверку, если появились новые за 24 часа, то копировать. В тоже время запускать скрипт, который будет перемещать эти новые файлы в другие мета.
Например в 23:00 будет на кроне запускаться копирование новых, а в 24:00 будет перемещение (если есть) их в другие места.
В итоге получится что появилось 5 файлов новых, потом через пару часов ещё 5 например и всё. Сегодня больше не добавляли, потом скрипт отработал, скопировал 10 штук, потом другой их забрал.
Хотя можно даже не сутки брать, а часы, но тут уже надо брать конечную дату. Например сделать файл, в который будет записываться последняя дата, когда забирался файл и с ней сравнивать и снова забирать и её перезаписывать потом
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
16.06.2023, 15:21
Так проще это rsync'ом делать!
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
16.06.2023, 15:31  [ТС]
вот я тоже о нём думал, только не понял как это всё ему через аргументы передать, там же и логин/пароль виндовый и шара и путь куда копировать и время
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
16.06.2023, 18:46
Цитата Сообщение от zawibis Посмотреть сообщение
там же и логин/пароль виндовый и шара
В этом деле может прекрасно помочь пакет autofs. Настраиваются параметры доступа к шаре и когда к ней инициируется обращение, она монтируется.

Цитата Сообщение от zawibis Посмотреть сообщение
и путь куда копировать и время
А вот это уже можно решить с помощью скрипта. Что-то, типа такого
Bash
1
find <path> -daystart -ctime 0 -exec cp {} <path_to_copy> \;
0
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
16.06.2023, 20:16
zawibis, достаточно вендовую шару по NFS монтировать. Оно это чуть ли ни с эпохи nt4 умеет!
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
17.06.2023, 11:33
Цитата Сообщение от Kubuntovod Посмотреть сообщение
find <path> -daystart -ctime 0 -exec cp {} <path_to_copy> \;
Так лишнего накопирует. Накидал на питоне более гуманный вариант
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
#!/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
 
date_time = datetime.datetime(yyyy, mm, dd)
unixtime_midnight = time.mktime(date_time.timetuple())
 
src_path = "/home/user/Desktop/"
dst_path = "/home/user/Public/Folder/"
 
with os.scandir(src_path) as i:
    for entry in i:
        if entry.is_file():
            cdate = creation_date(entry.name)
            if cdate > unixtime_midnight:
                #print(str(src_path) + entry.name + ' >>> ' + dst_path + entry.name)
                shutil.copy(str(src_path) + entry.name, dst_path + entry.name)
При запуске берёт сегодняшнюю дату и время 00:00:00. Т.е. всё, что насоздавалось за сегодня, будет скопировано. Для теста, можно раскомментить предпоследнюю строку и закомментить последнюю. Просто, выведет имена файлов.
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
19.06.2023, 06:16  [ТС]
Kubuntovod, спасибо большое за скрипт, но вот вопрос, а как он узнает как и под кем заходить в виндовую шару? я так понимаю в src_path должен быть путь к исходящей папке и там будет что-то из разряда //share/papka
Кстати, может скрипт из двух папок смотреть если снизу ещё dst_path прописать?
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
19.06.2023, 09:47
Цитата Сообщение от zawibis Посмотреть сообщение
а как он узнает как и под кем заходить в виндовую шару?
Это делается в другом месте. Я, выше, предлагал пакет autofs. Гуглится легко. Настраивается тоже. Работает прикольно. Если запросов нет, то и не подключается ничего. Как только происходит обращение к каталогу (который указан в настройках autofs), он монтируется. Лет 5 назад я такое проворачивал, между LinuxMint и Win7.

Цитата Сообщение от zawibis Посмотреть сообщение
Кстати, может скрипт из двух папок смотреть если снизу ещё dst_path прописать?
Конечно. Только "из" - это src_path (т.е. source - источник). Можно хоть пачку путей (используя, например, список - есть такая штука в питоне, а'ля массив элементов) в цикле перебрать.
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 07:52  [ТС]
Kubuntovod, подскажите, а как изменить код, если нужно 2 папки исходящих и входящих?

Добавлено через 12 минут
А ещё при выполнении выдаёт ошибку:

Traceback (most recent call last):
File "./script.py", line 26, in <module>
with os.scandir (src_path) as i:
AttributeError: 'module' object has no attribute 'scandir'
0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
21.06.2023, 08:49
Цитата Сообщение от zawibis Посмотреть сообщение
если нужно 2 папки исходящих и входящих
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
#!/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():
                cdate = creation_date(src_path + entry.name)
                if cdate > unixtime_midnight:
                    shutil.copy(src_path + entry.name, dst_paths[p])
Цитата Сообщение от zawibis Посмотреть сообщение
with os.scandir (src_path) as i:
AttributeError: 'module' object has no attribute 'scandir'
А версия питона какая? У меня в Python 3.11.3 норм отрабатывает.
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 09:15  [ТС]
Цитата Сообщение от Kubuntovod Посмотреть сообщение
А версия питона какая
2.7
0
21.06.2023, 09:23

Не по теме:

Цитата Сообщение от zawibis Посмотреть сообщение
2.7
Это как вообще так получилось? Сейчас такой древний питон днем с огнем не сыщешь, все уже давно на 3 перешли и усиленно ждут четвертый (где по слухам будут фигурные скобочки, типы данных и указатели).

0
21.06.2023, 09:26  [ТС]

Не по теме:

Eddy_Em, санкции в действии на работе... репозиторий только на яндексе, а там такой

0
21.06.2023, 09:29

Не по теме:

Цитата Сообщение от zawibis Посмотреть сообщение
санкции в действии на работе
Ну вообще не верю. Даже у вояк с их законсервированным МСВС все намного лучше. Да и любой - даже генерал - понимает, что нельзя сидеть на одном ядре больше месяца-двух: как только в сети появится список уязвимостей, тебя могут ломануть. Система должна быть живой. В идеале - ставить rolling дистрибутив, ну или хотя бы LTS с поддержкой в течение 5 лет (а потом обновляться до следующегоLTS).

0
Эксперт NIX
3303 / 932 / 200
Регистрация: 14.01.2013
Сообщений: 4,765
21.06.2023, 09:47
Цитата Сообщение от zawibis Посмотреть сообщение
2.7
Значит надо погуглить, как там, у динозавров, парсинг каталога происходил и заменить этот кусок кода.
0
0 / 0 / 0
Регистрация: 16.05.2012
Сообщений: 50
21.06.2023, 10:01  [ТС]
Kubuntovod, я сделал проще )
установил 3тий питон и скрипт заработал.
Точнее ошибок не выходит, но копирует что-то не то.
Например в одном исходном каталоге 22 файла от сегодняшней даты, а он скопировал 17
В другом каталоге 16 новых файлов, а скопировал 1, притом файл бд (thumbs.db)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2023, 10:01
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru