Заставить Lightroom Classic записывать все изображение сразу во время экспорта? (Экспорт в сетевую корзину GCS)

У меня заканчивается место на моем локальном компьютере, поэтому я смонтировал корзину Google Cloud Storage на свой локальный компьютер, используя файлы gcsfuse. Теперь я экспортирую свою библиотеку из Lightroom Classic в виде файлов JPEG в смонтированную корзину GCS, но процесс очень медленный, намного медленнее, чем должен быть, если строго учитывать скорость кодирования и время загрузки файлов в GCS.

Я считаю, что происходит то, что Lightroom постепенно записывает закодированные файлы в файловую систему. Это нормально в обычной системе, но с gcsfuseмодификацией файла включает в себя чтение всего файла из GCS, редактирование файла и запись всего этого обратно в GCS. Это означает, что каждая инкрементная запись занимает на несколько порядков больше времени, чем в противном случае.

Я придумал временное решение для экспорта 50 файлов за раз в локальный каталог, а затем выполнить массовое перемещение в каталог, который состоит из смонтированного ведра GCS, но я хотел бы сделать так, чтобы я мог экспортировать вся моя библиотека за один раз из Lightroom в смонтированное ведро GCS. Для этого мне нужно изменить Lightroom, чтобы записывать файлы JPEG только после того, как они были полностью закодированы, есть ли способ сделать это?

Но что? Похоже, вопрос не раскрыт.
извините, вопрос почему-то обрезался. Это все там сейчас
почему вы считаете, что Lightroom выполняет инкрементную запись? какие доказательства у вас есть? Делается ли резервная копия вашего каталога Lightroom, потому что это сработает, лол?
Когда я делаю ls -lсмонтированный раздел, он показывает, что файлы медленно увеличиваются в размере, как будто они записываются постепенно. Я также могу показать, что экспорт в локальный каталог, а затем перемещение этих локальных файлов в сетевой раздел выполняется быстрее, чем простой экспорт непосредственно во внешний раздел. Это заставляет меня поверить, что файлы записываются постепенно.
В Unix невозможно записать файл как мгновенную атомарную операцию. В этом смысле все файлы записываются постепенно. Обходной путь состоит в том, чтобы записать во временный каталог, а затем переименовать («переместить») файл, который является атомарным, если вы находитесь в одной файловой системе.
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он только номинально включает фотографии в виде компьютерных файлов и не имеет ничего общего с самой фотографией.
Почему нельзя купить другой жесткий диск? Вы тратите так много времени и усилий на создание решения, которое сжигает так много времени и трафика.
Мне нужны были фотографии сегодня, а Amazon не мог доставить другой жесткий диск в течение 2 дней, поэтому мне пришлось импровизировать. У меня есть еще один жесткий диск в пути

Ответы (2)

Крайне маловероятно, что Lightroom будет включать настройку (очевидную или секретную) для решения этой неясной ситуации.

Я думаю, вы находитесь в ситуации, когда применима старая шутка:

Врач! Мне больно, когда я это делаю!

Ну, не делай этого.

У вас есть обходной путь. Я бы сосредоточился на том, чтобы сделать это максимально безболезненным.

Достаточно справедливо - это просто делает его значительно более вовлеченным на моей половине, поскольку мне нужно вмешиваться каждые 20 минут или около того, чтобы автоматизировать переход к смонтированному разделу, а затем начать следующий экспорт, я просто разберусь с этим сейчас. Вы правы, что для Adobe было бы очень странно учитывать этот пограничный случай.
Зачем вмешиваться вручную? Вы определенно могли бы что-то написать, но это было бы довольно далеко от темы для этого сайта.
О, теперь я вижу твой другой ответ. Да, что-то в этом роде. :)

Для тех, кто хочет знать, как я сделал обходной путь менее сложным, я написал скрипт на Python для автоматического мониторинга локального каталога, в который экспортируется Lightroom Classic, и перемещения всех файлов (кроме самого последнего, который, возможно, все еще записывается) в сетевой диск по мере их экспорта. Это позволяет мне делать гигантский экспорт без присмотра.

Этот скрипт запускается в каталоге, в который экспортируются файлы, и файлы перемещаются в смонтированный каталог, который находится в «/Users/me/gcs-buckets/my-bucket».

#!/usr/bin/env python

import os
import sys
import shutil
import time

def main():
    while True:
        files = os.listdir(".")
        files = filter(lambda fn: len(os.path.splitext(fn)) == 2 and os.path.splitext(fn)[1] == '.jpg', files)
        # files are of the format "jmt2019_part1-476.jpg", parse into
        # (476, "jmt2019_part1-476.jpg") so we can sort by the integer
        file_pairs = [(int(os.path.splitext(f)[0].split("-")[1]), f) for f in files]
        file_pairs = sorted(file_pairs, key=lambda t: t[0])
        #print file_pairs
        for _, f in file_pairs[:-1]:
            # for all but the most recent file as it's likely being written still
            new_path = os.path.join("/Users/me/gcs-buckets/my-bucket", f)
            print "moving file", f, "to new path at", new_path
            before = time.time()
            shutil.move(f, new_path)
            after = time.time() - before
            print "moved file", f, "to remote storage in", after, "seconds!"
        print "waiting 10 seconds!"
        time.sleep(10)

if __name__ == '__main__':
    sys.exit(not main())