> For the complete documentation index, see [llms.txt](https://ayakaleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayakaleaf-pro.ayaka.space/on-premises/tr/destek/support-guides/v5.5.7-migration-binary-files-migration.md).

# (v5.5.7 Geçişi) İkili dosya geçişi

## İkili dosya geçişi

Yaklaşan ana sürüm `6.0` Server Pro ve Community Edition'ın yaklaşan ana sürümünün yayınlanması, ikili dosyaların depolama kullanımını yarıya indirecek. Çevrimiçi bir geçiş, sürümüne dahildir `5.5.7` , yükseltmenin bir parçası olarak minimum kesinti süresi sağlar.

Server Pro'dan bu yana `4.x`, ikili dosyalar iki kez saklanır: "filestore" içindeki etkin dosya deposunda ve tam proje geçmişi sisteminde. İleriye dönük olarak, her dosyanın tek bir kopyası tam proje geçmişi sisteminde saklanacaktır.

Birleştirilmiş depolama sistemine geçiş iki bölümden oluşur: geçiş aşamasını kontrol etmek için yeni bir bayrak ve tüm etkin ve yumuşak silinmiş projeleri işleyen bir betik.

Aşamalar:

* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=0` (varsayılan), dosyalar filestore'dan okunur ve filestore'a yazılır. Dosyalar geçmişe eşzamansız olarak yazılır.
* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` , dosyalar geçmişten filestore'a geri dönüşle okunur ve hem filestore'a hem de geçmişe yazılır. Sürüm düşürme `OVERLEAF_FILESTORE_MIGRATION_LEVEL=0` mümkündür.
* `OVERLEAF_FILESTORE_MIGRATION_LEVEL=2` dosyalar yalnızca geçmişten okunur ve geçmişe yazılır. Bir önceki sürüme düşürmek `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` mümkün değildir, yalnızca "çevrimdışı" olarak yapılmışsa mümkündür.

verileri depolarken [S3](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/s3) ve filestore için ayrı hizmet hesapları kullanırken (`OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID`) ve geçmiş (`OVERLEAF_HISTORY_S3_ACCESS_KEY_ID`): Lütfen filestore kullanıcısına blob'lar için geçmiş kovasına okuma erişimi verin `OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET` . Filestore hizmeti artık okumaları derleyici hizmetinden sağlayacaktır.

{% hint style="warning" %}
İkili dosyalar geçişini önce üretim dışı/sandbox ortamında gerçekleştirmeniz şiddetle tavsiye edilir.
{% endhint %}

{% hint style="success" %}
Standart Server Pro lisansı, uygulamayı bir üretim ortamında ve bir üretim dışı/sandbox ortamında çalıştırmanıza izin verir; test için bir üretim dışı ortam sağlamanız şiddetle tavsiye edilir.
{% endhint %}

{% hint style="info" %}
Server Pro/CE sürümüne yükseltme yaparsanız `6.0` ve daha sonra önceki bir sürüme düşürmek istediğinize karar verirseniz, tam bir sistem yedeğinden geri yükleme yapmalısınız.
{% endhint %}

### Geçiş prosedürü

{% stepper %}
{% step %}

#### Bir yedek oluşturun

Tam bir [yedek](https://docs.overleaf.com/on-premises/maintenance/data-and-backups#performing-a-consistent-backup) örneğinizin, **mongo**, **redis** ve **sharelatex** dizinlerinin tutarlı bir anlık görüntüsüyle birlikte.
{% endstep %}

{% step %}

#### Güncelle

**Araç takımı:** Günlüğün bir kopyasını çıktılamak için `$ bin/upgrade` betiği,  **araç takımını** en son sürüme yükseltmek için. Sorulduğunda, **kullanmayın** istemi onaylayın **Yükseltin** image? — bunun yerine, el ile düzenleyin **config/version** dosyasını ve değeri olarak ayarlayın `5.5.7`.

**Eski docker-compose.yml:** şu sürümü güncelleyin `sharelatex` hizmetini `5.5.7`.
{% endstep %}

{% step %}

#### Etkilenen proje sayısını tahmin edin

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"
```

{% endcode %}

Örnek çıktı:

{% code fullWidth="false" %}

```
Geçerli durum:
- Toplam proje sayısı: 10
- Toplam silinen proje sayısı: 5
İlerlemeyi tahmin etmek için 1000 proje örnekleniyor...
Projeler için örneklenen istatistikler:
- Örneklenen projeler: 9 (tüm projelerin %90'ı)
- Tüm karmalar mevcut olan örneklenen projeler: 5
- Arka doldurma karma dosyalarına ihtiyaç duyan proje yüzdesi: %44 (tahmini)
- Örneklenen projelerde tam proje geçmişi sistemiyle karşılaştırılması gereken 11 dosya var.
- Örneklenen projelerde tam proje geçmişi sistemine yüklenmesi gereken 3 dosya var (tüm dosyaların %27'si tahmin ediliyor).
Silinen projeler için örneklenen istatistikler:
- Örneklenen silinmiş projeler: 4 (silinmiş projelerin %80'i)
- Tüm karmalar mevcut olan örneklenen silinmiş projeler: 3
- Arka doldurma karma dosyalarına ihtiyaç duyan silinmiş proje yüzdesi: %25 (tahmini)
- Örneklenen silinmiş projelerde tam proje geçmişi sistemiyle karşılaştırılması gereken 2 dosya var.
- Örneklenen silinmiş projelerde tam proje geçmişi sistemine yüklenmesi gereken 1 dosya var (tüm dosyaların %50'si tahmin ediliyor).
```

{% endcode %}
{% endstep %}

{% step %}

#### Proje geçmişi kuyruklarını boşalt

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /overleaf/bin/flush-history-queues

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /overleaf/bin/flush-history-queues
```

{% endcode %}

Tüm projeler boşaltılana kadar boşaltmayı tekrarlayın (`"project_ids":0`).

```
bulunan projeler {"project_ids":0,"limit":100000,"ts":"2025-09-01T10:35:33.353Z"}
toplam {"succeededProjects":0,"failedProjects":0}
```

{% hint style="danger" %}
Eğer "failedProjects" sıfır değilse, lütfen destek ekibiyle iletişime geçin ve ikili dosyalar geçişine devam etmeyin.
{% endhint %}
{% endstep %}

{% step %}

#### Geçiş aşamasını 1'e ilerletin

Araç takımı: Ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL=1` içinde `config/variables.env`.

Eski docker-compose.yml: Ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1'` içindeki `ortam` bölümüne `sharelatex` hizmeti.
{% endstep %}

{% step %}

#### Yapılandırma değişikliğini uygulayın ve örneği başlatın

Araç takımı: `bin/up -d`

Eski docker-compose.yml: `docker compose up -d`
{% endstep %}

{% step %}

#### İkili dosyalara erişimi doğrulayın

Tarayıcıda Overleaf düzenleyicisinde bir proje açın ve bir resim gibi bir ikili dosya seçin.
{% endstep %}

{% step %}

#### Taşıma betiğini çalıştırın

{% code overflow="wrap" %}

```bash
# Overleaf Toolkit kullanıcıları:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"

# Eski docker-compose.yml kullanıcıları:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"
```

{% endcode %}

{% hint style="danger" %}
Eğer [günlüklerini kalıcı hale getiriyorsanız](https://docs.overleaf.com/on-premises/configuration/overleaf-toolkit/logging#persisting-logs) dosyaları **sharelatex** konteynerin dışında, günlükler dizini sahibinin `www-data` kullanıcısı (uid=33) olarak ayarlandığından emin olun, böylece çıktı günlük dosyası yazılabilir.
{% endhint %}

Çıktı şöyle görünmelidir:

```bash
Set UV_THREADPOOL_SIZE=16
{"name":"default","hostname":"c25e9faaeb53","pid":971,"level":30,"backend":"fs","msg":"Arka ucu yükleniyor","time":"2025-07-25T15:00:58.166Z","v":0}
Günlükler /var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log dosyasına yazılıyor
Proje dosyası yedeklemesi başlatılıyor...
Yüklenen genel blob'lar: 0
Silinmemiş projeler işleniyor...
1 proje işlendi, geçen süre 0 sn
Canlı projelerin güncellenmesi tamamlandı
Silinen projeler işleniyor...
deletedProjects koleksiyonu boş görünüyor.

Silinen projelerin güncellenmesi tamamlandı
Tamam.

```

Taşıma başarılı olursa, bir çıkış kodu alırsınız `0`ve son satırlarda başarısızlık olmadığını gösteren:

```bash
Tamam.
```

Günlük dosyası şöyle görünecek (betik tarafından yazdırılan yolu kullanın):

{% code overflow="wrap" %}

```bash
$ docker cp sharelatex:/var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log .
$ cat file-migration-2025-07-25T15_00_58_199Z.log
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"end":"68839a8f577b9f009d947b27 (2025-07-25T14:54:07.000Z)","msg":"gerçekten toplu işlem tamamlandı","time":"2025-07-25T15:00:58.379Z","v":0}
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"time":"2025-07-25T15:00:58.383Z","LOGGING_IDENTIFIER":"4effa2000000000000000000","projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063,"eventLoop":{"idle":48.277844,"active":381.53244699971054,"utilization":0.8876763888372498},"diff":{"eventLoop":{"idle":48.223536,"active":134.04030200059555,"utilization":0.7354190687027976},"projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063},"deferredBatches":[],"msg":"dosya-geçişi istatistikleri","v":0}
```

{% endcode %}
{% endstep %}

{% step %}

#### Örneği durdurun

Araç takımı: `bin/stop sharelatex`

Eski docker-compose.yml: `docker compose stop sharelatex`
{% endstep %}

{% step %}

#### Eski dosyaları uygulama için erişilemez hale getirin

Artık eski dosyaları ikincil depolamaya taşıyabilirsiniz. Daha sonra sorun çıkması ihtimaline karşı dosyaları bir süre saklamanızı öneririz.

{% code overflow="wrap" %}

```bash
# Araç takımı kullanıcıları:
$ bin/docker-compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files

# Eski docker-compose.yml kullanıcıları:
# /var/lib/overleaf içinde varsayılan bind-mount kullandığınızı varsayıyoruz
$ docker compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files
# Seçmeli bind-mount'lar kullanıyorsanız, konteyner içindeki /var/lib/overleaf/data/user_files için bind-mount'u basitçe kaldırabilirsiniz.
```

{% endcode %}
{% endstep %}

{% step %}

#### Geçiş aşamasını 2'ye ilerletin

Araç takımı: Ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL=2` içinde `config/variables.env`.

Eski docker-compose.yml: Ayarlayın `OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2'` içindeki `ortam` bölümüne `sharelatex` hizmeti.
{% endstep %}

{% step %}

#### Yapılandırma değişikliğini uygulayın ve örneği başlatın

Araç takımı: `bin/up -d`

Eski docker-compose.yml: `docker compose up -d`
{% endstep %}

{% step %}

#### İkili dosyalara erişimi doğrulayın

Tarayıcıda Overleaf düzenleyicisinde bir proje açın ve bir resim gibi bir ikili dosya seçin.
{% endstep %}
{% endstepper %}

#### Çevrimdışı taşıma

İkili dosya geçiş betiği çalışırken kullanıcıların giriş yapmasını engellemek istiyorsanız, lütfen şu adımları izleyin:

* Yönetici hesabıyla Overleaf örneğinize giriş yapın
* şuna tıklayın: **Yönetici** düğmesine basın ve şunu seçin **Siteyi Yönet**
* şuna tıklayın: **Düzenleyiciyi Aç/Kapat** sekmesi
* şuna tıklayın: **Düzenleyiciyi kapat** düğmesi
* şuna tıklayın: **Tüm kullanıcıların bağlantısını kes** düğmesi

Bu tamamlandıktan sonra, oturum açmış herhangi bir kullanıcı bakım sayfasına yönlendirilecektir ve giriş sayfasını ziyaret eden yeni kullanıcılar bakım sayfasını görecek ve **yapmayacaktır** giriş yapabileceklerdir.

Örneği yeniden başlatırken bu adımları tekrarlamanız gerekir. Siteyi yeniden açmak için örneği yeniden başlatmanız yeterlidir.

#### Çevrimiçi taşıma

Uygulama hâlâ çalışırken taşıma betiklerini çalıştırmak mümkündür. Dikkate alınması gereken birkaç husus vardır:

* Geçiş süreci IO açısından yoğundur, betik çalışırken kaynak kullanımını izlemelisiniz.
* Yüksek işlem eşzamanlılığıyla, içindeki olay döngüsü `filestore` hizmeti bazı bloklamalar yaşayabilir, bu da kullanıcı deneyiminin düşmesine yol açar. Varsayılan değerlerle başlamanızı öneririz `--concurrency=10` ve `--concurrent-batches=1` .
* Betiği istediğiniz zaman durdurabilirsiniz. Tekrar başlatmak, önceki projeleri doğrulayacak ve zaten işlenmiş dosyaları atlayacaktır. Bu, geçişi daha az yoğun saatlerde (ör. gece) çalıştırmayı tercih etmeniz durumunda kullanışlıdır.

Önerimiz, siteyi kapatıp proje sayınız 1000 projeden az olduğunda geçişi bir bakım penceresinde çevrimdışı olarak çalıştırmanızdır (çalıştırırken geçiş betiğinin çıktısına bakın `--report`). Proje sayısı çok fazlaysa betiği çalıştırıp ilerlemesini izleyebilir, ardından özel durumunuza göre çevrimiçi mi yoksa çevrimdışı mı devam edeceğinize karar verebilirsiniz.

#### Eski ikili dosya verilerini temizleyin

Geçişi tamamlayıp projelerin hâlâ tüm dosyalarına erişebildiğini doğruladığınızda, içindeki eski dosya depolamasını kaldırabilirsiniz `/var/lib/overleaf/data/user_files`. Bu dosyaları bir süre tutmanızı şiddetle öneririz - önce klasörün adını değiştirerek bunları uygulama için erişilemez hale getirebilirsiniz.

### Sorun giderme

Buraya sorun giderme önerileri ekleyeceğiz. Normalde yalnızca Server Pro müşterilerine destek sunduğumuzu lütfen unutmayın; ancak bu geçişin doğası gereği, ikili dosya geçişine özgü sorunlar yaşayan CE müşterilerini de desteklemek için elimizden gelenin en iyisini yapacağız.

İkili dosya geçiş betiği başarısız olursa (yani bir hatayla çıkarsa veya sıfırdan farklı sayıda başarısız proje yazdırırsa), lütfen aşağıdaki ayrıntıları e-posta ile destek ekibimize gönderin [support+filestoremigration@overleaf.com](mailto:support+filestoremigration@overleaf.com?subject=Binary%20file%20migration%20problem\&body=Instance%20Type%3A%20CE%20or%20Server%20Pro%20%28delete%20as%20appropriate%29%0A%0AInstallation%20Type%3A%20Overleaf%20toolkit%20or%20docker-compose.yml%20or%20other%20%28delete%20as%20appropriate%29%0A%0AScript%20output%3A%0A%0Abin%2Fdoctor%20output%20%28if%20using%20toolkit%29%3A%0A)şu ayrıntılarla:

Konu: İkili dosya geçişi sorunu

Gövde:

* Örnek Türü: CE veya Server Pro (uygun olanı silin)
* Kurulum Türü: Overleaf toolkit veya `docker-compose.yml` ya da diğer (uygun olanı silin)
* Sürüm: 5.5.x (araç takımı: `$ cat config/version`)
* Taşıma betiği çıktısı (container içinde şu konumda bulunmalıdır `/var/log/overleaf`)
* Rapor: (geçiş betiğini `--report`)
* İşlenen projeler: (betiğin son çalıştırmasına göre)
* Taşımanın süresi:
* `bin/doctor` çıktı (toolkit kullanırken)
* Toolkit sürümü: `$ git rev-parse HEAD` (toolkit kullanırken)

E-postaya şu hizmetlerin günlük dosyalarını eklemeyi düşünün: `filestore` hizmetini e-postaya ekleyin. Şurada bulabilirsiniz `/var/log/overleaf/filestore.log` içinde `sharelatex` container ve bunları şu şekilde dışa aktarın:

```bash
$ docker cp sharelatex:/var/log/overleaf/filestore.log .
# <timestamp> yerine, betik tarafından yazdırılan zaman damgasını yazın
$ docker cp sharelatex:/var/log/overleaf/file-migration-<timestamp>.log .
```

Lütfen eklemeden önce günlük dosyalarındaki hassas bilgileri gizleyin.

#### Eksik dosyalar

Server Pro/CE'nin eski sürümleri, kullanıcı yüklemeleri tamamlanmadan önce dosya ağacı girdileri oluşturuyordu; bu da yükleme başarısız olduğunda dosyaların eksik görünüyor gibi olmasına neden olabiliyordu. Tüm dosya ağaçları işlenirken bu vakalardan birkaçının hata olarak raporlandığını görebilirsiniz.

Eksik dosya sayısı düşükse, bu vakaları manuel olarak gözden geçirip tarayıcıdaki düzenleyiciden silmeyi düşünün.

Eksik dosya sayısı yüksekse, lütfen destekle iletişime geçmeyi düşünün; yukarıdaki e-posta şablonuna bakın.

#### Bozuk dosya ağaçlarını bulma

Taşıma, bozuk dosya ağacı olan projelerde başarısız olabilir (örneğin, dosya adlarının boş olduğu durumlarda). Bu sorunların bir listesini şu betik ile bulabilirsiniz `find_malformed_filetrees` veritabanındaki tüm projeleri kontrol eden betik:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web && /sbin/setuser www-data node scripts/find_malformed_filetrees.mjs > /tmp/malformed-file-trees.json"
```

{% endcode %}

Geçersiz yolları düzeltmek için şu betiği kullanın `fix_malformed_filetree` betiğini, her hatalı yol için komutu bir kez çalıştırarak:

{% code overflow="wrap" %}

```bash
$ bin/docker-compose exec sharelatex /bin/bash -c "cd /overleaf/services/web && /sbin/setuser www-data node scripts/fix_malformed_filetree.mjs --logs=/tmp/malformed-file-trees.json"
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://ayakaleaf-pro.ayaka.space/on-premises/tr/destek/support-guides/v5.5.7-migration-binary-files-migration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
