У меня заканчивается место на моем локальном компьютере, поэтому я смонтировал корзину Google Cloud Storage на свой локальный компьютер, используя файлы gcsfuse
. Теперь я экспортирую свою библиотеку из Lightroom Classic в виде файлов JPEG в смонтированную корзину GCS, но процесс очень медленный, намного медленнее, чем должен быть, если строго учитывать скорость кодирования и время загрузки файлов в GCS.
Я считаю, что происходит то, что Lightroom постепенно записывает закодированные файлы в файловую систему. Это нормально в обычной системе, но с gcsfuse
модификацией файла включает в себя чтение всего файла из GCS, редактирование файла и запись всего этого обратно в GCS. Это означает, что каждая инкрементная запись занимает на несколько порядков больше времени, чем в противном случае.
Я придумал временное решение для экспорта 50 файлов за раз в локальный каталог, а затем выполнить массовое перемещение в каталог, который состоит из смонтированного ведра GCS, но я хотел бы сделать так, чтобы я мог экспортировать вся моя библиотека за один раз из Lightroom в смонтированное ведро GCS. Для этого мне нужно изменить Lightroom, чтобы записывать файлы JPEG только после того, как они были полностью закодированы, есть ли способ сделать это?
Крайне маловероятно, что Lightroom будет включать настройку (очевидную или секретную) для решения этой неясной ситуации.
Я думаю, вы находитесь в ситуации, когда применима старая шутка:
Врач! Мне больно, когда я это делаю!
Ну, не делай этого.
У вас есть обходной путь. Я бы сосредоточился на том, чтобы сделать это максимально безболезненным.
Для тех, кто хочет знать, как я сделал обходной путь менее сложным, я написал скрипт на 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())
матдм
Джон Аллард
Роб Джей Кроу
Джон Аллард
ls -l
смонтированный раздел, он показывает, что файлы медленно увеличиваются в размере, как будто они записываются постепенно. Я также могу показать, что экспорт в локальный каталог, а затем перемещение этих локальных файлов в сетевой раздел выполняется быстрее, чем простой экспорт непосредственно во внешний раздел. Это заставляет меня поверить, что файлы записываются постепенно.матдм
Майкл С
спорный
Джон Аллард