Автоматически копирующие файлы с машины Linux на машину Windows

Вы должны использовать WMI . Затем вы можете отслеживать Win32_ProcessStartTrace, чтобы получать уведомления о начале процесса. Кроме того, вы даже можете использовать Win32_ProcessStopTrace, чтобы получать уведомления, когда процесс останавливается. Ваш код будет выглядеть так:

Public Shared Sub Main()
    Dim startWatcher As ManagementEventWatcher = New ManagementEventWatcher(New WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"))
    startWatcher.EventArrived += New EventArrivedEventHandler(startWatcher_EventArrived)
    startWatcher.Start()
End Sub


Private Shared Sub startWatcher_EventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
    Dim logString As String ="{0}: Process started: {1}".Format( Now.ToString(), e.NewEvent.Properties("ProcessName").Value)
     Using sw As StreamWriter = File.AppendText(YourLogFile)
            sw.WriteLine(logString)
     End Using
End Sub

6
задан S.Lott 14 November 2008 в 12:41
поделиться

5 ответов

Можно попытаться монтировать диск Windows как точку монтирования на машине Linux, с помощью smbfs; Вы затем смогли бы использовать нормальный Linux пишущие сценарий и копирующие инструменты, такие как крон и scp/rsync, чтобы сделать копирование.

6
ответ дан 8 December 2019 в 18:43
поделиться

Можно найти rsync для окон в cygwin, с которым можно установить rsync сервер на поле окон и выполнить задание крона на машине Linux rsync'ing все файлы к машине окон. Мы раньше делали это, и это хорошо работало.

2
ответ дан 8 December 2019 в 18:43
поделиться

"Я в замешательстве того, как настроить это на машине Windows". Windows является клиентом или сервером? В недоумении средства, что, конкретно? Что Вы не можете сделать?

"машина Linux к окна" может быть сделана два пути.

  1. Linux является клиентом. Windows выполняет FTP или SCP или сервер SSH. Linux имеет клиент и продвигает файл к Windows. Взгляд на FileZilla для свободного FTP-сервера окон. Кроме того, окна часто имеет сервис FTP, это выключено. Включите его.

  2. Windows является клиентом. Windows периодически вытягивает файл с сервера Linux. Это легче, так как Linux уже имеет все необходимые серверы в наличии. Вы делаете, howeveevr, должен запустить их на Linux.

Существует множество sftp, scp клиенты для Windows. Windows идет с клиентом ftp. Google для sftp клиента. Вы найдете WinSCP, Шпаклевку, filezilla, и перечислите бесплатный список страны sftp клиентов.

2
ответ дан 8 December 2019 в 18:43
поделиться

Я не использовал его в течение многих лет теперь, но Вы могли попробовать Унисон из http://www.cis.upenn.edu/~bcpierce/unison/

Это могло быть сделано с 'smbclient', который действует во многом как клиент FTP к доле Windows. Проверьте страницу справочника: man smbclient и ищите способы написать сценарий его с -c опция, или man expect управлять им.

Вот то, как я, вероятно, сделал бы это хотя:

  1. Выберите, каким пользователем Вы собираетесь быть при синхронизации файлов. Войдите в систему как этот пользователь и введите 'идентификатор' и получите числовой идентификатор. Вы будете использовать этот идентификатор на шаге 4
  2. Станьте 'корнем'
  3. mkdir /mnt/sharename
  4. Отредактируйте свой/etc/fstab файл и добавьте запись что-то вроде этого. Замените идентификатор пользователя 500 с Вашим идентификатором пользователя. Замените sharename своим сетевым именем окон. Replance WINDOWSHOSTNAME с Вашим именем хоста или IP-адресом. Если Вы не знаете доли, работаете smbclient -L WINDOWSHOSTNAME.

    //WINDOWSHOSTNAME/sharename /mnt/sharename cifs credentials=/root/smblogin,uid=500,noauto,user 0 0

  5. Отредактируйте/root/smblogin и поместите следующие две строки в него

    username=YOUR_WINDOWS_USERNAME
    password=YOUR_WINDOWS_PASSWOD

  6. Войдите в систему как пользователь от шага 1.

  7. Попытка, монтирующая долю: mount /mnt/sharename
  8. Если это успешно выполняется, то запишите сценарий, чтобы сделать это автоматически. Давайте назовем это 'backup.sh':

    #!/bin/sh
    df | grep -q /mnt/sharename
    if test $? -ne 0 ; then
    mount /mnt/sharename
    fi
    cp -r /path/to/dir /mnt/sharename/destination/

  9. Используйте крон для запущения скрипта.

    1. Ввести crontab -e
    2. Поместите следующее в файл:

    PATH=/bin:/usr/bin
    # Backup at 2:15 A.M. every day. Run 'man 5 crontab' for help on the time format
    15 2 * * * /path/to/backup.sh

2
ответ дан 8 December 2019 в 18:43
поделиться

Можно попробовать WinSCP и его поддержку сценариев. И Windows поддерживает некоторую подобную крону операцию в своем материале управления, не так ли?

1
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: